Replication

In the specification looking at daily price volatility the dependent variable of interest is the standard deviation of hourly prices per day. We have the advantage of being able to model the volatility of hourly prices directly with gets.

Replicate Daily

Models as in Rintamäki et al.

The below specifications replicate the results reported in Rintamaki et al for daily price volatility. Unfortunately, gas spot prices are not provided in their replication data as they are proprietary (available via Bloomberg portal) - those specs have been commented out below.

Pulled from replication data available at: https://doi-org.ezproxy-prd.bodleian.ox.ac.uk/10.1016/j.eneco.2016.12.019

# Required including "here("data/raw/rintamaki_replication/data/" to data read commands in the listed files 
source(here("data/raw/rintamaki_replication/models/read_daily_data.R"))
daily_forms <- list(
  # SPECS FOR DK1
  list(vol_dk1, wind_dk1, 2, 1, 2, 1, 7),
  list(vol_dk1, wind_pen_dk1, 2, 1, 2, 1, 7),
  list(vol_dk1, cbind(wind_dk1, exim_op1_dk1, exim_op2_dk1, exim_p_dk1), 2, 1, 2, 1, 7),
  list(vol_dk1, cbind(wind_dk1, exim_op1_dk1, exim_p_dk1), 2, 1, 2, 1, 7),
  list(vol_dk1, cbind(wind_pen_dk1, exim_op1_dk1, exim_p_dk1), 2, 1, 2, 1, 7),
  #list(fwd1(vol_dk1), list(fwd1(wind_dk1), diff(gas_dk1))),
  #SPECS FOR DK2
  list(vol_dk2, wind_dk2, 2, 1, 2, 1, 7),
  list(vol_dk2, wind_pen_dk2, 2, 1, 2, 1, 7),
  list(vol_dk2, cbind(wind_dk2, exim_op1_dk2, exim_op2_dk2, exim_p_dk2), 2, 1, 2, 1, 7),
  list(vol_dk2, cbind(wind_dk2, exim_op1_dk2, exim_p_dk2), 2, 1, 2, 1, 7),
  list(vol_dk2, cbind(wind_pen_dk2, exim_op1_dk2, exim_p_dk2), 2, 1, 2, 1, 7),
  #list(fwd1(vol_dk2), list(fwd1(wind_dk2), diff(gas_dk2))),
  # SPECS FOR DE
  list(vol_de, wind_de, 2, 1, 2, 1, 7),
  list(fwd1(vol_de), diff(solar_de), 2, 1, 2, 1, 7),
  list(fwd1(vol_de), cbind(fwd1(wind_de), diff(solar_de)), 2, 1, 2, 1, 7),
  list(vol_de, res_de, 2, 1, 2, 1, 7),
  list(vol_de, wind_pen_de, 2, 1, 2, 1, 7),
  list(fwd1(vol_de), diff(solar_pen_de), 2, 1, 2, 1, 7),
  list(vol_de, res_pen_de, 2, 1, 2, 1, 7),
  list(fwd1(vol_de), cbind(fwd1(wind_de), diff(solar_de), fwd1(exim_op1_de), fwd1(exim_op2_de), fwd1(exim_p_de)), 2, 1, 2, 1, 7))
  #list(fwd1(vol_de), list(fwd1(wind_de), diff(solar_de), diff(gas_de))))

daily_res <- lapply(daily_forms, function(x) do.call(fitModel, x))
## Warning in arima(y, order = c(p, 0, q), seasonal = list(order = c(P, 0, :
## possible convergence problem: optim gave code = 1

## Warning in arima(y, order = c(p, 0, q), seasonal = list(order = c(P, 0, :
## possible convergence problem: optim gave code = 1

## Warning in arima(y, order = c(p, 0, q), seasonal = list(order = c(P, 0, :
## possible convergence problem: optim gave code = 1
daily_res %>% 
  modelsummary
 (1)   (2)   (3)   (4)   (5)   (6)   (7)   (8)   (9)   (10)   (11)   (12)   (13)   (14)   (15)   (16)   (17)   (18)
ar1 1.224 1.221 1.255 1.245 1.244 1.233 1.228 1.269 1.231 1.229 1.151 1.166 1.161 1.155 1.152 1.166 1.153 1.151
(0.039) (0.039) (0.038) (0.039) (0.039) (0.053) (0.054) (0.051) (0.054) (0.053) (0.036) (0.036) (0.031) (0.048) (0.024) (0.036) (0.036) (0.038)
ar2 −0.253 −0.250 −0.279 −0.273 −0.272 −0.268 −0.264 −0.297 −0.268 −0.266 −0.162 −0.175 −0.171 −0.166 −0.163 −0.176 −0.164 −0.163
(0.033) (0.032) (0.033) (0.033) (0.033) (0.041) (0.042) (0.041) (0.042) (0.042) (0.034) (0.034) (0.032) (0.040) (0.025) (0.034) (0.035) (0.035)
ma1 −0.864 −0.863 −0.870 −0.867 −0.867 −0.838 −0.836 −0.852 −0.833 −0.833 −0.916 −0.917 −0.919 −0.915 −0.917 −0.915 −0.914 −0.928
(0.029) (0.029) (0.026) (0.028) (0.028) (0.043) (0.044) (0.040) (0.044) (0.043) (0.018) (0.019) (0.015) (0.031) (0.015) (0.018) (0.019) (0.021)
sar1 1.071 1.071 1.081 1.075 1.075 1.105 1.106 1.107 1.105 1.106 1.177 1.172 1.175 1.174 1.177 1.172 1.174 1.169
(0.025) (0.025) (0.025) (0.026) (0.026) (0.025) (0.025) (0.025) (0.025) (0.025) (0.032) (0.032) (0.030) (0.034) (0.032) (0.032) (0.032) (0.032)
sar2 −0.073 −0.072 −0.082 −0.077 −0.077 −0.106 −0.107 −0.107 −0.105 −0.106 −0.177 −0.172 −0.175 −0.174 −0.177 −0.172 −0.174 −0.169
(0.025) (0.025) (0.025) (0.025) (0.025) (0.025) (0.025) (0.025) (0.025) (0.025) (0.032) (0.032) (0.030) (0.034) (0.032) (0.032) (0.032) (0.032)
sma1 −0.980 −0.980 −0.983 −0.979 −0.979 −0.989 −0.990 −0.990 −0.988 −0.989 −0.990 −0.991 −0.987 −0.989 −0.989 −0.991 −0.990 −0.989
(0.008) (0.008) (0.007) (0.008) (0.008) (0.006) (0.006) (0.006) (0.006) (0.006) (0.005) (0.000) (0.010) (0.019) (0.024) (0.009) (0.001) (0.001)
intercept 2.392 1.708 2.253 2.357 1.661 2.207 1.714 2.101 2.155 1.729 1.916 2.270 2.001 2.085 2.322 2.243 2.277 1.931
(0.344) (0.318) (0.402) (0.343) (0.309) (0.440) (0.444) (0.489) (0.418) (0.421) (0.551) (0.605) (0.568) (0.601) (0.531) (0.570) (0.572) (0.467)
ext −0.089 −0.087 −0.070 −0.064 0.033 −0.038 0.017 0.035 −0.047 0.020
(0.016) (0.016) (0.015) (0.015) (0.015) (0.019) (0.023) (0.015) (0.019) (0.022)
wind_dk1 −0.073 −0.091
(0.019) (0.019)
exim_op1_dk1 0.064 0.100 0.102
(0.033) (0.033) (0.033)
exim_op2_dk1 −0.224
(0.031)
exim_p_dk1 0.078 −0.081 −0.085
(0.037) (0.031) (0.031)
wind_pen_dk1 −0.088
(0.020)
wind_dk2 −0.052 −0.060
(0.016) (0.017)
exim_op1_dk2 −0.015 −0.007 −0.012
(0.042) (0.043) (0.043)
exim_op2_dk2 −0.304
(0.040)
exim_p_dk2 0.145 −0.047 −0.052
(0.048) (0.042) (0.042)
wind_pen_dk2 −0.054
(0.017)
ext1 0.030 0.037
(0.015) (0.015)
ext2 −0.035 −0.020
(0.019) (0.019)
ext3 0.085
(0.012)
ext4 0.022
(0.013)
ext5 −0.078
(0.014)
Num.Obs. 1826 1826 1826 1826 1826 1826 1826 1826 1826 1826 1096 1095 1095 1096 1096 1095 1096 1095
AIC 2880.8 2883.5 2822.5 2873.6 2875.7 3161.9 3165.3 3108.3 3164.2 3166.8 489.7 490.6 488.6 494.2 489.1 488.4 493.9 436.1
BIC 2930.4 2933.1 2888.6 2934.2 2936.3 3211.5 3214.9 3174.4 3224.8 3227.4 534.7 535.6 538.6 539.2 534.1 533.4 538.9 501.1
RMSE 0.53 0.53 0.52 0.53 0.53 0.57 0.57 0.56 0.57 0.57 0.30 0.30 0.30 0.30 0.30 0.30 0.30 0.29

Hourly price volatility model with gets

This is where we have our current comparative advantage in that we can model hourly price volatility directly.

# Loads hourly price data for de, dk1, dk2
for(cty in c('dk1', 'dk2', 'de')){
  temp <- read_xlsx(here('data/raw/rintamaki_replication/data/raw_data.xlsx'), sheet = cty) %>% 
    clean_names
  assign(paste0("data_", cty), temp)
}

Germany

data_de %>% 
  ggplot(aes(x = date, y = de_price)) +
  geom_line() +
  labs(title = "Germany: Hourly Electricity Prices", y = "Hourly Electricity Price", x = "Date")

# Check to make sure data is ordered
data_de %>% arrange(date, hour) %>% identical(data_de)
## [1] TRUE
# The below model incorporates ARCH(24) to be selected over, available regressors for wind forecasts, solar forecasts, and imports to and from France. In line with Rintamaki et al, we incorporate moving average terms for half-day, daily, and weekly prices volatility (levels?). Seasonal moving average terms are not yet incorporated here as they are in Rintamaki et al. Rather we might want to consider the seasonal moving average to have a periodicity of 24 hours (moving average over the same time of day)
de_mod <- arx(data_de$de_price, 
              # Include 24 ARCH terms to be selected over
              # Question: In theory, the ARCH(24) would proxy the seasonal (daily) AR term?
              arch = 1:24, 
              # Additional regressors to select over (only wind forecasts, solar forecasts, and imports between Germany and France are available at hourly frequency in the replication data)
              # Worth doing additional data scoping
              # Also perhaps worth including additional indicators for time of day (assuming this variation is not mopped up by the moving average terms)
              vxreg = as.matrix(data_de[c('de_wind_fcast', 'de_solar_fcast', 'de_fr', 'fr_de')]), 
              # As in Rintamaki et al. the below line incorporates moving average terms for the half-day (12), day (24 hours) and week (168 hours) 
              log.ewma = c(12, 24, 168)) 
## Warning in arx(data_de$de_price, arch = 1:24, vxreg = as.matrix(data_de[c("de_wind_fcast", : 
## 
## New default 'mc = TRUE' in arx() as of version 0.28
## This warning only appears the first time arx() is invoked
## To suppress this warning, set options(mc.warning = FALSE)
# Perform gets model selection over the log-variance model above
# Turn of ARCH diagnostics as the GUM does not pass (could possible manipulate lag and p value choice here)
de_vmod <- getsv(de_mod, t.pval = 0.001, ar.LjungB = NULL)
## GUM log-variance equation:
## 
##                reg.no. keep        coef   std.error   t-stat   p-value    
## vconst               1    1  1.8954e+00  1.0014e-01 358.2185 < 2.2e-16 ***
## arch1                2    0  5.8181e-01  6.2374e-03  93.2783 < 2.2e-16 ***
## arch2                3    0 -3.5317e-03  7.2259e-03  -0.4888 0.6250156    
## arch3                4    0 -3.5501e-02  7.2242e-03  -4.9142 8.967e-07 ***
## arch4                5    0 -1.0043e-02  7.2186e-03  -1.3913 0.1641497    
## arch5                6    0 -3.3139e-02  7.2133e-03  -4.5942 4.364e-06 ***
## arch6                7    0 -1.1185e-02  7.2128e-03  -1.5506 0.1210008    
## arch7                8    0 -3.2399e-02  7.2134e-03  -4.4915 7.103e-06 ***
## arch8                9    0 -8.7058e-03  7.2241e-03  -1.2051 0.2281732    
## arch9               10    0 -1.3099e-03  7.2319e-03  -0.1811 0.8562671    
## arch10              11    0 -1.6037e-02  7.2305e-03  -2.2180 0.0265629 *  
## arch11              12    0 -1.0092e-03  7.2273e-03  -0.1396 0.8889439    
## arch12              13    0 -2.0967e-02  7.1982e-03  -2.9128 0.0035855 ** 
## arch13              14    0 -1.8687e-02  7.1691e-03  -2.6067 0.0091480 ** 
## arch14              15    0 -7.0670e-03  7.1822e-03  -0.9840 0.3251394    
## arch15              16    0 -2.2407e-02  7.1833e-03  -3.1193 0.0018146 ** 
## arch16              17    0 -3.7778e-03  7.1829e-03  -0.5259 0.5989277    
## arch17              18    0 -2.3916e-02  7.1811e-03  -3.3304 0.0008684 ***
## arch18              19    0  8.3342e-03  7.1800e-03   1.1608 0.2457487    
## arch19              20    0 -4.5284e-03  7.1834e-03  -0.6304 0.5284426    
## arch20              21    0 -5.3013e-03  7.1845e-03  -0.7379 0.4605924    
## arch21              22    0 -9.2692e-04  7.1901e-03  -0.1289 0.8974256    
## arch22              23    0  1.3481e-02  7.1919e-03   1.8744 0.0608876 .  
## arch23              24    0  6.4164e-02  7.1902e-03   8.9239 < 2.2e-16 ***
## arch24              25    0  1.2186e-01  6.1825e-03  19.7100 < 2.2e-16 ***
## logEqWMA(12)        26    0  3.0409e-01  2.7297e-02  11.1402 < 2.2e-16 ***
## logEqWMA(24)        27    0  4.1168e-02  3.4000e-02   1.2108 0.2259724    
## logEqWMA(168)       28    0 -3.9480e-03  2.1543e-02  -0.1833 0.8545958    
## de_wind_fcast       29    0  7.4541e-06  2.2588e-06   3.3000 0.0009681 ***
## de_solar_fcast      30    0 -4.8653e-06  1.9912e-06  -2.4434 0.0145561 *  
## de_fr               31    0 -1.5198e-04  1.1846e-05 -12.8305 < 2.2e-16 ***
## fr_de               32    0 -5.7088e-05  2.0817e-05  -2.7424 0.0061024 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                       Chi-sq df p-value
## Ljung-Box AR(1)    3325.5273  1       0
## Ljung-Box ARCH(25)    3.8785 25       1
## 21 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
## 
##   Path 1: 3 22 12 10 28 17 20 15 19 21 27 5 9 7 23 30 32 13 
##   Path 2: 5 12 22 10 28 3 17 20 15 19 21 27 9 7 23 30 32 13 
##   Path 3: 7 12 22 10 28 3 17 20 15 19 21 27 5 9 23 30 32 13 
##   Path 4: 9 12 22 28 3 17 20 10 15 19 21 27 5 7 23 30 32 13 
##   Path 5: 10 22 12 28 3 17 20 15 19 21 27 5 9 7 23 30 32 13 
##   Path 6: 11 28 22 3 17 20 15 19 21 27 12 9 5 7 10 23 32 30 -14 
##   Path 7: 12 22 28 10 3 17 20 15 19 21 27 5 9 7 23 30 32 13 
##   Path 8: 13 10 28 22 3 17 20 19 15 21 27 5 9 12 7 23 30 32 
##   Path 9: 14 22 28 12 10 17 3 20 27 21 19 9 5 7 15 23 30 32 -11 
##   Path 10: 15 22 12 28 10 3 17 20 19 21 27 5 9 7 23 30 32 13 
##   Path 11: 16 28 22 12 10 3 20 27 21 19 9 5 7 17 23 14 -30 -32 -11 
##   Path 12: 17 22 12 28 10 3 20 15 19 21 27 5 9 7 23 30 32 13 
##   Path 13: 19 20 12 22 10 28 3 17 15 21 27 5 9 7 23 30 32 13 
##   Path 14: 20 22 12 28 10 3 17 15 19 21 27 5 9 7 23 30 32 13 
##   Path 15: 21 12 28 10 3 22 17 15 27 20 19 5 9 7 23 30 32 13 
##   Path 16: 22 12 28 10 3 17 20 15 19 21 27 5 9 7 23 30 32 13 
##   Path 17: 23 12 10 28 3 17 20 22 21 19 15 5 9 7 27 30 32 13 
##   Path 18: 27 22 12 10 28 17 20 3 15 21 19 5 9 7 23 30 32 13 
##   Path 19: 28 22 12 10 3 17 20 15 19 21 27 5 9 7 23 30 32 13 
##   Path 20: 30 22 12 28 10 17 3 20 15 19 21 27 5 9 7 23 32 13 
##   Path 21: 32 28 22 12 10 3 17 20 15 27 21 19 5 9 7 23 30 13 
## 
## Terminal models:
## 
##         info(sc)      logl     n  k
## spec 1: 8.386333 -109534.0 26139 14
## spec 2: 8.394811 -109644.8 26139 14
## spec 3: 8.385634 -109524.8 26139 14
## spec 4: 8.380971 -109453.7 26139 16
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch3   arch5   arch7   arch10   arch12   arch14   arch17   arch23   arch24   logEqWMA(12)   de_wind_fcast   de_solar_fcast   de_fr   fr_de
de_vmod %>% plot

DK1

data_dk1 %>% 
  ggplot(aes(x = date, y = dk1_price)) +
  geom_line() +
  labs(main = "DK1: Hourly Electricity Prices")

data_dk1 %>% arrange(date, hour) %>% identical(data_dk1)
## [1] TRUE
# Same spec as above with appropriate corrections to the regressors
dk1_mod <- arx(data_dk1$dk1_price, 
              arch = 1:24, 
              vxreg = as.matrix(data_dk1[c("dk1_load_fcast", "dk1_wind_fcast", "dk1_no2", "no2_dk1", "dk1_se3", "se3_dk1")]),
               log.ewma = c(12, 24, 168)) 


# Perform gets model selection over the log-variance model above
dk1_vmod <- getsv(dk1_mod, t.pval = 0.001, ar.LjungB = NULL)
## GUM log-variance equation:
## 
##                reg.no. keep        coef   std.error    t-stat   p-value    
## vconst               1    1  2.0172e+00  5.4321e-02 1379.0242 < 2.2e-16 ***
## arch1                2    0  6.0445e-01  4.8399e-03  124.8876 < 2.2e-16 ***
## arch2                3    0  3.0277e-02  5.6434e-03    5.3650 8.136e-08 ***
## arch3                4    0 -1.7644e-02  5.6403e-03   -3.1282  0.001760 ** 
## arch4                5    0 -1.2948e-02  5.6355e-03   -2.2977  0.021586 *  
## arch5                6    0 -1.7261e-02  5.6325e-03   -3.0646  0.002181 ** 
## arch6                7    0  1.4257e-03  5.6321e-03    0.2531  0.800157    
## arch7                8    0 -4.6656e-03  5.6308e-03   -0.8286  0.407345    
## arch8                9    0 -1.1409e-02  5.6288e-03   -2.0268  0.042686 *  
## arch9               10    0  3.1481e-03  5.6334e-03    0.5588  0.576277    
## arch10              11    0 -7.0138e-03  5.6371e-03   -1.2442  0.213423    
## arch11              12    0 -1.3609e-02  5.6385e-03   -2.4137  0.015797 *  
## arch12              13    0 -2.3295e-02  5.6207e-03   -4.1445 3.411e-05 ***
## arch13              14    0  1.6176e-02  5.5976e-03    2.8898  0.003857 ** 
## arch14              15    0 -9.1378e-03  5.6031e-03   -1.6309  0.102929    
## arch15              16    0  3.6041e-03  5.6050e-03    0.6430  0.520217    
## arch16              17    0 -2.7019e-03  5.6056e-03   -0.4820  0.629813    
## arch17              18    0  9.9656e-03  5.6073e-03    1.7773  0.075533 .  
## arch18              19    0 -6.3015e-03  5.6078e-03   -1.1237  0.261142    
## arch19              20    0  6.9875e-03  5.6080e-03    1.2460  0.212770    
## arch20              21    0  1.1826e-02  5.6071e-03    2.1092  0.034936 *  
## arch21              22    0  1.8614e-02  5.6071e-03    3.3197  0.000902 ***
## arch22              23    0  2.4458e-02  5.6079e-03    4.3613 1.296e-05 ***
## arch23              24    0  7.6882e-02  5.6049e-03   13.7168 < 2.2e-16 ***
## arch24              25    0  8.5187e-02  4.7824e-03   17.8126 < 2.2e-16 ***
## logEqWMA(12)        26    0  1.9586e-01  1.7495e-02   11.1952 < 2.2e-16 ***
## logEqWMA(24)        27    0 -4.7579e-02  1.8586e-02   -2.5600  0.010470 *  
## logEqWMA(168)       28    0  2.2026e-02  1.0175e-02    2.1647  0.030418 *  
## dk1_load_fcast      29    0  2.9724e-07  1.4970e-05    0.0199  0.984158    
## dk1_wind_fcast      30    0  7.0917e-05  1.0943e-05    6.4808 9.219e-11 ***
## dk1_no2             31    0 -6.9258e-05  2.3247e-05   -2.9792  0.002892 ** 
## no2_dk1             32    0 -1.3200e-04  2.3125e-05   -5.7080 1.150e-08 ***
## dk1_se3             33    0  5.4250e-05  3.6553e-05    1.4842  0.137774    
## se3_dk1             34    0 -2.9485e-06  3.3375e-05   -0.0883  0.929602    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                       Chi-sq df p-value
## Ljung-Box AR(1)    2396.4839  1 0.00000
## Ljung-Box ARCH(25)    5.7287 25 0.99998
## 23 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## 
##   Path 1: 4 29 34 7 17 16 10 8 11 19 20 33 15 18 28 27 14 -31 -21 -9 -12 -22 
##   Path 2: 5 29 34 7 17 16 10 8 11 19 20 33 15 18 28 27 14 31 -9 -21 -12 -22 
##   Path 3: 6 29 34 17 16 10 8 11 19 20 33 15 18 7 28 27 14 -31 -12 -21 -4 -22 
##   Path 4: 7 29 34 17 16 10 8 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 5: 8 29 34 7 17 16 10 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 6: 9 29 34 7 10 17 16 19 20 11 33 15 18 5 28 27 8 14 -31 -21 -22 
##   Path 7: 10 29 34 7 17 16 8 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 8: 11 29 10 34 7 17 16 8 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 9: 12 29 34 7 17 16 10 8 19 20 33 15 18 5 28 27 14 11 -31 -21 -22 
##   Path 10: 14 29 34 7 15 17 16 10 8 11 19 20 33 18 27 28 5 31 -9 -21 -12 -22 
##   Path 11: 15 29 16 34 7 10 17 8 11 19 20 33 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 12: 16 29 34 17 7 10 8 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 13: 17 29 34 7 16 10 8 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 14: 18 29 34 7 17 19 10 8 16 11 15 20 33 28 27 5 14 31 -9 -21 -12 -22 
##   Path 15: 19 29 34 7 17 16 10 8 20 11 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 16: 20 29 34 7 17 16 10 19 8 11 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 17: 21 29 34 7 17 16 10 8 19 11 18 15 33 28 27 14 5 20 -31 -12 -9 
##   Path 18: 27 29 34 7 16 17 10 8 11 20 19 18 33 28 15 5 14 31 -9 -21 -12 -22 
##   Path 19: 28 34 29 7 17 16 10 8 11 19 20 15 18 33 27 5 14 31 -9 -21 -12 -22 
##   Path 20: 29 34 7 17 16 10 8 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 21: 31 34 7 29 17 16 10 8 11 19 20 33 15 18 28 27 5 14 -9 -21 -12 -22 
##   Path 22: 33 29 7 17 16 10 34 8 11 19 20 15 18 28 27 5 14 31 -9 -21 -12 -22 
##   Path 23: 34 29 7 17 16 10 8 11 19 20 33 15 18 28 27 5 14 31 -9 -21 -12 -22 
## 
## Terminal models:
## 
##         info(sc)      logl     n  k
## spec 1: 8.671951 -189222.2 43661 17
## spec 2: 8.687761 -189572.7 43661 16
## spec 3: 8.687266 -189556.5 43661 17
## spec 4: 8.692836 -189683.5 43661 16
## spec 5: 8.686429 -189543.6 43661 16
## spec 6: 8.682763 -189463.6 43661 16
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch2   arch4   arch5   arch8   arch11   arch12   arch20   arch21   arch22   arch23   arch24   logEqWMA(12)   dk1_wind_fcast   dk1_no2   no2_dk1
dk1_vmod %>% plot

DK2

data_dk2 %>% 
  ggplot(aes(x = date, y = dk2_price)) +
  geom_line() +
  labs(main = "DK2: Hourly Electricity Prices")

data_dk2 %>% arrange(date, hour) %>% identical(data_dk2)
## [1] TRUE
# Same spec as above with appropriate corrections to the regressors
dk2_mod <- arx(data_dk2$dk2_price, 
              arch = 1:24, 
              vxreg = as.matrix(data_dk2[c("dk2_load_fcast", "dk2_wind_fcast", 
                                 "dk2_se4","dk2_se4_2")]),
               log.ewma = c(12, 24, 168)) 


# Perform gets model selection over the log-variance model above
dk2_vmod <- getsv(dk2_mod, t.pval = 0.001, ar.LjungB = NULL)
## GUM log-variance equation:
## 
##                reg.no. keep        coef   std.error    t-stat   p-value    
## vconst               1    1  2.2187e+00  4.4496e-02 2486.3454 < 2.2e-16 ***
## arch1                2    0  6.2910e-01  4.8220e-03  130.4648 < 2.2e-16 ***
## arch2                3    0  3.0162e-04  5.6846e-03    0.0531  0.957685    
## arch3                4    0 -1.2263e-02  5.6794e-03   -2.1592  0.030839 *  
## arch4                5    0 -1.2063e-02  5.6739e-03   -2.1260  0.033507 *  
## arch5                6    0 -5.9613e-03  5.6698e-03   -1.0514  0.293074    
## arch6                7    0 -1.5173e-02  5.6686e-03   -2.6767  0.007438 ** 
## arch7                8    0  1.8626e-03  5.6688e-03    0.3286  0.742487    
## arch8                9    0 -1.9672e-03  5.6704e-03   -0.3469  0.728651    
## arch9               10    0 -4.3919e-03  5.6709e-03   -0.7745  0.438667    
## arch10              11    0  1.0484e-02  5.6759e-03    1.8472  0.064731 .  
## arch11              12    0 -2.7936e-02  5.6785e-03   -4.9196 8.702e-07 ***
## arch12              13    0 -1.6450e-02  5.6647e-03   -2.9040  0.003686 ** 
## arch13              14    0  9.6957e-03  5.6439e-03    1.7179  0.085822 .  
## arch14              15    0  2.6291e-03  5.6485e-03    0.4654  0.641614    
## arch15              16    0  4.4085e-04  5.6506e-03    0.0780  0.937815    
## arch16              17    0 -1.3189e-03  5.6509e-03   -0.2334  0.815451    
## arch17              18    0  4.9549e-03  5.6517e-03    0.8767  0.380651    
## arch18              19    0 -1.5177e-03  5.6527e-03   -0.2685  0.788322    
## arch19              20    0 -3.0555e-04  5.6523e-03   -0.0541  0.956889    
## arch20              21    0  1.6525e-02  5.6521e-03    2.9237  0.003460 ** 
## arch21              22    0  1.6383e-02  5.6523e-03    2.8984  0.003753 ** 
## arch22              23    0  3.1062e-02  5.6520e-03    5.4958 3.910e-08 ***
## arch23              24    0  8.3581e-02  5.6530e-03   14.7851 < 2.2e-16 ***
## arch24              25    0  1.0642e-01  4.7691e-03   22.3151 < 2.2e-16 ***
## logEqWMA(12)        26    0  1.8053e-01  1.6245e-02   11.1126 < 2.2e-16 ***
## logEqWMA(24)        27    0 -7.4563e-02  1.7611e-02   -4.2339 2.302e-05 ***
## logEqWMA(168)       28    0  2.2178e-02  9.5550e-03    2.3211  0.020285 *  
## dk2_load_fcast      29    0 -1.0045e-05  1.9782e-05   -0.5078  0.611615    
## dk2_wind_fcast      30    0  1.3429e-04  3.0722e-05    4.3712 1.239e-05 ***
## dk2_se4             31    0  7.6436e-06  2.1887e-05    0.3492  0.726915    
## dk2_se4_2           32    0 -1.1370e-04  1.6364e-05   -6.9482 3.752e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                        Chi-sq df p-value
## Ljung-Box AR(1)    1633.88530  1       0
## Ljung-Box ARCH(25)    0.60547 25       1
## 22 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
## 
##   Path 1: 3 20 16 17 19 8 9 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 2: 4 20 16 17 9 8 31 19 29 15 10 18 3 6 11 28 14 13 22 -27 
##   Path 3: 5 3 20 16 17 9 8 31 19 15 29 10 18 11 6 28 14 13 22 -27 
##   Path 4: 6 16 20 3 17 8 9 31 19 15 29 10 18 11 28 4 14 13 22 -27 
##   Path 5: 7 20 16 3 17 19 31 9 15 29 18 10 8 11 5 28 14 13 22 -27 
##   Path 6: 8 3 20 16 17 9 19 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 7: 9 20 3 16 8 17 19 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 8: 10 3 20 16 17 8 19 31 15 29 9 18 6 11 28 4 14 13 22 -27 
##   Path 9: 11 3 10 20 16 17 8 9 19 31 15 29 18 6 28 4 14 13 22 -27 
##   Path 10: 13 3 16 20 17 9 8 19 31 14 29 18 10 6 15 11 28 4 22 -27 
##   Path 11: 14 3 20 16 17 8 9 31 19 29 18 10 6 11 15 13 28 4 22 -27 
##   Path 12: 15 3 20 17 16 8 9 19 31 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 13: 16 3 20 17 19 8 9 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 14: 17 16 3 20 19 8 9 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 15: 18 20 3 16 19 17 9 8 31 29 15 10 6 11 28 4 14 13 22 -27 
##   Path 16: 19 3 16 20 17 8 9 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 17: 20 3 16 17 19 8 9 31 15 29 18 10 6 11 28 4 14 13 22 -27 
##   Path 18: 21 3 16 19 17 8 9 31 15 29 18 10 6 11 20 28 4 14 13 -27 
##   Path 19: 22 16 3 20 17 9 8 19 31 15 29 18 10 6 11 28 4 14 13 -27 
##   Path 20: 28 3 20 16 29 17 8 9 19 15 31 18 10 6 11 4 14 13 22 -27 
##   Path 21: 29 20 3 16 17 19 8 9 31 15 18 10 6 11 28 4 14 13 22 -27 
##   Path 22: 31 20 3 16 17 19 8 9 15 29 18 10 6 11 28 4 14 13 22 -27 
## 
## Terminal models:
## 
##         info(sc)      logl     n  k
## spec 1: 9.078499 -198118.7 43661 13
## spec 2: 9.107696 -198756.1 43661 13
## spec 3: 9.109620 -198798.1 43661 13
## spec 4: 9.077464 -198096.1 43661 13
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch4   arch6   arch11   arch21   arch22   arch23   arch24   logEqWMA(12)   logEqWMA(24)   dk2_wind_fcast   dk2_se4_2
dk2_vmod %>% plot

Replicate Weekly

Data

Pulled from replication data available at:https://doi-org.ezproxy-prd.bodleian.ox.ac.uk/10.1016/j.eneco.2016.12.019

# Required including "here("data/raw/rintamaki_replication/data/" to data read commands in the listed files
source(here("data/raw/rintamaki_replication/models/read_weekly_data.R"))

Models as in Rintamäki et al.

weekly_forms <- list(
  # SPECS FOR DK1
  list(vol_dk1, wind_dk1, 1, 0, 0, 1, 4),
  list(fwd1(vol_dk1), cbind(fwd1(wind_dk1), diff(exim_dk1)), 1, 0, 0, 1, 4),
  list(vol_dk1, wind_std_dk1, 1, 0, 0, 1, 4),
  # SPECS FOR DK2
  list(vol_dk2, wind_dk2, 1, 0, 0, 1, 4),
  list(vol_dk2, wind_std_dk2, 1, 0, 0, 1, 4),
  # SPECS FOR DE
  list(fwd1(vol_de), diff(wind_de), 1, 0, 0, 0, 4),
  list(fwd1(vol_de), diff(solar_de), 1, 0, 0, 0, 4),
  list(vol_de, res_de, 1, 0, 0, 0, 4),
  list(fwd1(vol_de), cbind(diff(wind_de), fwd1(exim_de)), 1, 0, 0, 0, 4))

weekly_res <- lapply(weekly_forms, function(x) do.call(fitModel, x))

weekly_res %>%
  modelsummary
 (1)   (2)   (3)   (4)   (5)   (6)   (7)   (8)   (9)
ar1 0.307 0.304 0.303 0.345 0.346 0.168 0.206 0.173 0.156
(0.059) (0.060) (0.059) (0.060) (0.060) (0.082) (0.079) (0.080) (0.084)
sma1 0.199 0.203 0.188 0.171 0.150
(0.062) (0.063) (0.061) (0.068) (0.067)
intercept 0.402 0.522 −0.593 1.317 0.760 1.967 1.968 0.764 1.941
(0.474) (0.526) (0.444) (0.390) (0.371) (0.040) (0.042) (1.071) (0.052)
ext 0.182 0.365 0.062 0.184 0.105 −0.171 0.132
(0.071) (0.073) (0.072) (0.076) (0.059) (0.113) (0.117)
ext1 0.164 0.110
(0.079) (0.060)
ext2 0.041 0.028
(0.076) (0.037)
Num.Obs. 261 260 261 261 261 155 155 156 155
AIC 429.4 430.3 412.0 500.6 495.5 173.0 174.0 175.7 174.4
BIC 447.2 451.6 429.8 518.4 513.3 185.1 186.1 187.9 189.6
RMSE 0.54 0.54 0.52 0.62 0.61 0.41 0.41 0.41 0.41

Daily price volatility model with gets

for(cty in c('dk1', 'dk2', 'de')){
  temp <- read_xlsx(here('data/raw/rintamaki_replication/data/raw_data.xlsx'), sheet = cty) %>%
    clean_names
  assign(paste0("data_", cty), temp)
}

df_list <- list("data_de" = data_de, "data_dk1" = data_dk1, "data_dk2" = data_dk2)

for(n_df in names(df_list)){
  df <- df_list[[n_df]]
  temp <- df %>%
    tibble %>%
    # Certain days in October have multiple values for hour one across all countries...not sure why.
    # Below I take the average of the duplicate observations but might be worth looking into why this is the case
    group_by(date, hour) %>%
    summarise(across(names(df)[!(names(df) %in% c("date", "hour", "month"))], ~mean(., na.rm = TRUE))) %>%
    # Daily average price
    group_by(date) %>%
    select(-c("hour")) %>%
    summarise(across(names(df)[!(names(df) %in% c("date", "hour", "month"))], ~mean(., na.rm = TRUE)))

   assign(paste0("daily_", n_df), temp)
}
## `summarise()` has grouped output by 'date'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'date'. You can override using the
## `.groups` argument.
## `summarise()` has grouped output by 'date'. You can override using the
## `.groups` argument.

Germany

daily_data_de %>%
  ggplot(aes(x = date, y = de_price)) +
  geom_line() +
  labs(main = "Germany: Daily Electricity Prices")

daily_data_de %>% arrange(date) %>% identical(daily_data_de)
## [1] TRUE
# equally-weighted moving averages are incorporated to account for daily moving averages (24 hours) and weekly moving averages (24 hours * 7 days)

# Might want to consider re-incorporating the seasonality dimension as well
daily_de_mod <- arx(daily_data_de$de_price,
              # Include 24 ARCH terms to be selected over
              # in theory, the ARHC(24) would proxy the seasonal AR term?
              arch = 1:24,
              # Additional regressors to select over (only wind forecasts, solar forecasts, and imports between Germany and France are available at hourly frequency in the replication data
              # Worth doing additional data scoping
              # Also perhaps worth including additional indicators for time of day (assuming this variation is not mopped up by the moving average terms)
              vxreg = as.matrix(daily_data_de[c('de_load_fcast', 'de_wind_fcast', 'de_solar_fcast', 'de_fr', 'fr_de')]),
              # As in Rintamaki et al. the below line incorporates moving average terms for the half-day (12), day (24 hours) and week (168 hours)
              log.ewma = c(12, 24, 168))
# Seasonal moving average terms are not yet incorporated here as they are in Rintamaki et al. Rather we might want to consider the seasonal moving average to have a periodicity of 24 hours (moving average over the same time of day)

# Perform gets model selection over the log-variance model above
daily_de_vmod <- getsv(daily_de_mod, t.pval = 0.001, ar.LjungB = NULL)
## GUM log-variance equation:
## 
##                reg.no. keep        coef   std.error  t-stat   p-value    
## vconst               1    1  5.1860e+00  1.1588e+00 20.0292 7.627e-06 ***
## arch1                2    0  1.7806e-01  3.3514e-02  5.3132 1.361e-07 ***
## arch2                3    0  1.7537e-03  3.4631e-02  0.0506  0.959625    
## arch3                4    0 -6.3795e-02  3.4554e-02 -1.8462  0.065189 .  
## arch4                5    0  2.8558e-02  3.4479e-02  0.8283  0.407741    
## arch5                6    0 -5.1591e-02  3.4691e-02 -1.4871  0.137334    
## arch6                7    0  7.8038e-03  3.4353e-02  0.2272  0.820344    
## arch7                8    0  1.7124e-01  3.4315e-02  4.9903 7.245e-07 ***
## arch8                9    0 -2.9569e-02  3.4902e-02 -0.8472  0.397109    
## arch9               10    0 -7.3610e-02  3.5043e-02 -2.1006  0.035958 *  
## arch10              11    0 -1.9717e-02  3.4953e-02 -0.5641  0.572833    
## arch11              12    0  1.2027e-04  3.4877e-02  0.0034  0.997249    
## arch12              13    0  3.0124e-02  3.4662e-02  0.8691  0.385047    
## arch13              14    0  2.8043e-02  3.4274e-02  0.8182  0.413465    
## arch14              15    0  6.4897e-02  3.4719e-02  1.8692  0.061922 .  
## arch15              16    0  2.2317e-02  3.4777e-02  0.6417  0.521220    
## arch16              17    0 -3.2015e-02  3.4841e-02 -0.9189  0.358402    
## arch17              18    0 -1.0580e-02  3.4665e-02 -0.3052  0.760272    
## arch18              19    0 -9.4621e-03  3.3999e-02 -0.2783  0.780842    
## arch19              20    0 -5.3204e-02  3.3852e-02 -1.5717  0.116381    
## arch20              21    0  2.1831e-02  3.4042e-02  0.6413  0.521486    
## arch21              22    0  6.9100e-02  3.4209e-02  2.0200  0.043684 *  
## arch22              23    0  1.8586e-02  3.4164e-02  0.5440  0.586556    
## arch23              24    0 -1.2442e-03  3.3995e-02 -0.0366  0.970813    
## arch24              25    0 -4.7448e-02  3.3607e-02 -1.4118  0.158343    
## logEqWMA(12)        26    0 -6.2733e-02  2.2805e-01 -0.2751  0.783312    
## logEqWMA(24)        27    0  6.4927e-02  2.6986e-01  0.2406  0.809922    
## logEqWMA(168)       28    0  2.3483e-01  2.2275e-01  1.0542  0.292055    
## de_load_fcast       29    0 -2.5706e-05  1.3536e-05 -1.8990  0.057883 .  
## de_wind_fcast       30    0  2.3473e-05  1.7445e-05  1.3455  0.178807    
## de_solar_fcast      31    0 -2.0942e-04  4.2904e-05 -4.8813 1.248e-06 ***
## de_fr               32    0 -4.6543e-04  1.4818e-04 -3.1410  0.001739 ** 
## fr_de               33    0 -6.3443e-05  2.5913e-04 -0.2448  0.806645    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                     Chi-sq df p-value
## Ljung-Box AR(1)    233.214  1 0.00000
## Ljung-Box ARCH(25)  14.504 25 0.95221
## 29 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
## 
##   Path 1: 3 12 24 7 27 26 33 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 2: 4 24 12 3 33 27 19 7 18 5 26 16 9 21 23 17 13 11 28 20 6 14 30 25 29 15 
##   Path 3: 5 3 24 12 26 7 19 27 33 18 23 11 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 4: 6 24 7 12 3 33 19 27 18 11 9 23 5 26 13 21 16 17 28 14 20 25 30 29 4 15 
##   Path 5: 7 12 24 3 27 26 33 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 6: 9 24 3 12 7 33 19 27 18 26 23 11 16 21 5 13 17 28 20 14 6 25 30 29 4 15 
##   Path 7: 10 12 19 24 3 33 27 18 7 23 26 21 16 5 14 9 13 6 11 28 20 17 25 30 29 4 22 
##   Path 8: 11 24 12 3 33 7 27 26 19 18 23 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 9: 12 24 3 7 27 26 33 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 10: 13 3 24 12 26 7 27 19 33 18 23 11 21 5 16 9 17 28 20 14 6 25 30 29 4 15 
##   Path 11: 14 12 3 24 33 18 26 27 19 7 23 5 11 16 9 17 21 13 6 28 20 25 30 29 4 15 
##   Path 12: 15 12 3 24 7 19 33 23 11 21 26 27 18 5 9 13 17 16 28 20 30 25 6 14 29 4 
##   Path 13: 16 12 3 24 7 33 18 26 27 19 21 23 9 5 11 13 17 28 20 14 6 25 30 29 4 15 
##   Path 14: 17 3 12 27 26 24 33 7 19 18 16 21 23 9 5 11 13 28 20 14 6 25 30 29 4 15 
##   Path 15: 18 12 24 3 27 26 7 33 19 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 16: 19 24 12 3 27 26 7 33 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 17: 20 27 12 24 3 33 26 7 18 21 19 13 16 11 5 9 23 17 28 14 6 25 30 29 4 15 
##   Path 18: 21 12 3 24 33 7 19 26 27 18 23 11 5 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 19: 22 12 3 24 33 7 18 26 27 19 11 5 16 13 9 17 23 21 20 14 28 6 25 30 29 4 10 
##   Path 20: 23 12 24 3 7 33 19 26 27 18 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 21: 24 12 3 7 27 26 33 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 22: 25 27 3 12 33 26 7 24 19 18 23 5 21 9 16 13 17 11 28 20 14 6 30 29 4 15 
##   Path 23: 26 3 24 12 27 7 33 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 24: 27 12 24 3 26 7 33 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
##   Path 25: 28 12 3 24 33 7 26 19 18 27 11 23 9 5 21 16 17 13 20 14 6 25 30 29 4 15 
##   Path 26: 29 12 3 33 24 7 26 27 18 19 23 16 13 11 9 5 21 17 28 20 14 6 25 30 4 15 
##   Path 27: 30 24 3 26 12 27 7 18 19 23 33 11 5 21 9 16 13 17 6 14 28 20 25 29 4 15 
##   Path 28: 32 12 3 24 7 26 19 27 18 28 11 17 23 21 5 9 16 13 20 25 14 6 29 4 30 22 -10 
##   Path 29: 33 12 24 3 7 26 27 19 18 23 11 5 21 9 16 13 17 28 20 14 6 25 30 29 4 15 
## 
## Terminal models:
## 
##         info(sc)      logl   n k
## spec 1: 7.567160 -3487.247 928 7
## spec 2: 7.628807 -3519.268 928 6
## spec 3: 7.680182 -3539.689 928 7
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch7   arch9   arch21   de_solar_fcast   de_fr
daily_de_vmod %>% plot

DK1

daily_data_dk1 %>%
  ggplot(aes(x = date, y = dk1_price)) +
  geom_line() +
  labs(main = "DK1: Daily Electricity Prices")

daily_data_dk1 %>% arrange(date) %>% identical(daily_data_dk1)
## [1] TRUE
# Same spec as above with appropriate corrections to the regressors
daily_dk1_mod <- arx(daily_data_dk1$dk1_price,
              mc = TRUE,
              arch = 1:24,
              vxreg = as.matrix(daily_data_dk1[c("dk1_load_fcast", "dk1_wind_fcast", "dk1_no2", "no2_dk1", "dk1_se3", "se3_dk1")]),
               log.ewma = c(12, 24, 168))


# Perform gets model selection over the log-variance model above
daily_dk1_vmod <- getsv(daily_dk1_mod, t.pval = 0.001, ar.LjungB = NULL)
## GUM log-variance equation:
## 
##                reg.no. keep        coef   std.error  t-stat   p-value    
## vconst               1    1  4.0844e+00  5.5450e-01 54.2564 1.760e-13 ***
## arch1                2    0  2.8248e-01  2.4845e-02 11.3698 < 2.2e-16 ***
## arch2                3    0  7.3071e-02  2.5831e-02  2.8288  0.004730 ** 
## arch3                4    0 -2.8568e-02  2.5893e-02 -1.1033  0.270059    
## arch4                5    0  4.1816e-02  2.5826e-02  1.6191  0.105614    
## arch5                6    0  3.0545e-02  2.5843e-02  1.1819  0.237403    
## arch6                7    0  4.2625e-02  2.5846e-02  1.6492  0.099305 .  
## arch7                8    0  1.0220e-01  2.5860e-02  3.9520 8.081e-05 ***
## arch8                9    0 -3.2478e-03  2.6014e-02 -0.1248  0.900659    
## arch9               10    0  2.1980e-02  2.6073e-02  0.8430  0.399339    
## arch10              11    0  4.7300e-04  2.6058e-02  0.0182  0.985520    
## arch11              12    0 -6.8103e-02  2.6072e-02 -2.6121  0.009082 ** 
## arch12              13    0  2.3688e-02  2.6069e-02  0.9087  0.363666    
## arch13              14    0  2.6743e-02  2.5716e-02  1.0399  0.298529    
## arch14              15    0  5.4644e-02  2.5758e-02  2.1215  0.034035 *  
## arch15              16    0  6.8946e-03  2.5762e-02  0.2676  0.789025    
## arch16              17    0 -1.5133e-02  2.5737e-02 -0.5880  0.556617    
## arch17              18    0 -8.5454e-03  2.5749e-02 -0.3319  0.740023    
## arch18              19    0  2.0613e-02  2.5579e-02  0.8058  0.420452    
## arch19              20    0 -3.0322e-02  2.5508e-02 -1.1888  0.234709    
## arch20              21    0  1.2908e-02  2.5542e-02  0.5054  0.613367    
## arch21              22    0  6.1679e-02  2.5570e-02  2.4121  0.015969 *  
## arch22              23    0  2.6790e-02  2.5618e-02  1.0458  0.295821    
## arch23              24    0 -5.7758e-02  2.5894e-02 -2.2306  0.025844 *  
## arch24              25    0 -2.1820e-03  2.4836e-02 -0.0879  0.930000    
## logEqWMA(12)        26    0  1.0974e-01  1.1262e-01  0.9745  0.329974    
## logEqWMA(24)        27    0 -2.8936e-02  1.0601e-01 -0.2729  0.784928    
## logEqWMA(168)       28    0 -1.6951e-01  6.9110e-02 -2.4528  0.014281 *  
## dk1_load_fcast      29    0 -3.1577e-04  1.5831e-04 -1.9946  0.046250 *  
## dk1_wind_fcast      30    0  1.7683e-04  8.0913e-05  2.1854  0.029000 *  
## dk1_no2             31    0  1.4864e-04  2.3154e-04  0.6420  0.520991    
## no2_dk1             32    0 -5.0654e-04  2.1198e-04 -2.3895  0.016983 *  
## dk1_se3             33    0  7.5344e-04  3.0562e-04  2.4652  0.013795 *  
## se3_dk1             34    0 -2.4873e-04  2.7180e-04 -0.9151  0.360254    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                     Chi-sq df p-value
## Ljung-Box AR(1)    272.599  1       0
## Ljung-Box ARCH(25)   1.157 25       1
## 31 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
## 
##   Path 1: 3 25 11 9 16 18 27 4 21 17 19 31 13 20 34 10 6 23 14 29 5 30 7 12 24 22 -26 -28 
##   Path 2: 4 11 9 25 27 16 18 21 31 19 17 10 13 20 34 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 3: 5 11 25 9 16 18 27 21 17 31 10 4 19 13 20 34 23 14 6 29 30 26 12 28 22 24 -3 -7 
##   Path 4: 6 11 25 9 16 18 27 21 31 19 17 10 20 13 34 4 23 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 5: 7 11 25 9 16 27 18 21 31 17 19 10 13 20 34 23 4 5 14 29 30 6 12 26 28 24 -22 -15 -3 
##   Path 6: 9 11 25 16 27 18 21 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 7: 10 9 25 11 16 18 27 21 17 31 19 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 8: 11 25 9 16 27 18 21 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 9: 12 9 27 16 25 13 21 18 19 11 31 17 10 26 4 34 20 14 23 6 29 5 28 30 22 24 -3 -7 
##   Path 10: 13 11 25 9 16 27 18 21 31 17 19 10 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 11: 14 11 9 25 27 16 18 21 31 17 19 10 20 34 4 13 23 6 26 29 12 5 28 30 22 24 -3 -7 
##   Path 12: 15 27 9 25 11 18 21 17 31 16 19 10 20 13 34 23 4 6 26 29 28 5 12 14 30 24 -22 -3 -7 
##   Path 13: 16 11 25 9 27 18 21 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 14: 17 11 25 9 16 27 21 18 31 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 15: 18 11 25 9 16 27 21 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 16: 19 11 25 9 18 16 27 21 17 31 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 17: 20 11 9 25 21 16 27 18 19 31 17 13 10 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 18: 21 11 25 9 27 16 18 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 19: 22 27 9 11 25 16 18 19 17 31 10 20 13 21 34 4 6 14 26 29 12 5 23 30 24 28 -3 -7 
##   Path 20: 23 25 11 9 27 16 18 21 17 31 19 10 13 20 34 4 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 21: 24 11 9 16 18 27 23 31 21 19 25 10 17 13 20 34 4 6 14 26 29 28 12 5 22 30 -3 -7 
##   Path 22: 25 11 9 16 27 18 21 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 23: 26 9 25 11 16 18 21 31 27 17 19 4 34 20 13 10 23 6 14 29 12 5 28 30 22 24 -3 -7 
##   Path 24: 27 11 9 25 16 18 21 31 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 25: 28 25 9 11 16 18 21 17 19 27 26 31 4 34 23 20 13 10 29 6 14 12 5 30 22 24 -3 -7 
##   Path 26: 29 11 25 9 16 27 18 21 31 19 17 34 10 13 20 23 4 6 14 26 12 5 28 30 22 24 -3 -7 
##   Path 27: 30 11 9 27 16 25 21 18 19 17 10 13 31 20 23 4 6 34 14 29 5 26 12 28 22 24 -3 -7 
##   Path 28: 31 11 25 9 27 16 18 21 17 19 10 13 20 34 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
##   Path 29: 32 11 25 9 16 18 27 21 17 19 10 13 20 4 26 23 34 6 14 12 5 29 28 24 22 -33 -30 -3 -7 
##   Path 30: 33 25 11 16 9 18 27 21 19 17 10 13 31 20 23 6 4 14 5 29 34 28 26 12 24 22 -3 -7 
##   Path 31: 34 11 25 9 16 27 18 21 17 19 31 10 13 20 4 23 6 14 26 29 12 5 28 30 22 24 -3 -7 
## 
## Terminal models:
## 
##         info(sc)      logl    n k
## spec 1: 8.027536 -6625.174 1658 8
## spec 2: 8.148401 -6725.371 1658 8
## spec 3: 8.158973 -6734.135 1658 8
## spec 4: 8.146595 -6723.874 1658 8
## spec 5: 8.226193 -6786.154 1658 9
## spec 6: 8.188960 -6758.994 1658 8
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch7   arch14   logEqWMA(12)   logEqWMA(168)   no2_dk1   dk1_se3
daily_dk1_vmod %>% plot

DK2

daily_data_dk2 %>%
  ggplot(aes(x = date, y = dk2_price)) +
  geom_line() +
  labs(main = "DK2: Daily Electricity Prices")

data_dk2 %>% arrange(date) %>% identical(data_dk2)
## [1] TRUE
# Same spec as above with appropriate corrections to the regressors
daily_dk2_mod <- arx(daily_data_dk2$dk2_price,
              arch = 1:24,
              vxreg = as.matrix(daily_data_dk2[c("dk2_load_fcast", "dk2_wind_fcast",
                                 "dk2_se4","dk2_se4_2")]),
               log.ewma = c(12, 24, 168))


# Perform gets model selection over the log-variance model above
# Requires turning off both ARCH and AR Ljung-Box test - could play around with lag and pvalues
daily_dk2_vmod <- getsv(daily_dk2_mod, t.pval = 0.001, ar.LjungB = NULL, arch.LjungB = NULL)
## GUM log-variance equation:
## 
##                reg.no. keep        coef   std.error  t-stat   p-value    
## vconst               1    1  1.6987e+00  5.0005e-01 11.5401 0.0006811 ***
## arch1                2    0  1.9307e-01  2.5161e-02  7.6735 2.867e-14 ***
## arch2                3    0  3.4324e-02  2.5756e-02  1.3327 0.1828189    
## arch3                4    0 -9.3282e-03  2.5644e-02 -0.3638 0.7160855    
## arch4                5    0 -8.3994e-03  2.5562e-02 -0.3286 0.7425044    
## arch5                6    0  8.2666e-03  2.5446e-02  0.3249 0.7453257    
## arch6                7    0  9.3857e-02  2.5371e-02  3.6994 0.0002233 ***
## arch7                8    0  9.8990e-02  2.5505e-02  3.8811 0.0001081 ***
## arch8                9    0  1.7443e-02  2.5574e-02  0.6820 0.4953055    
## arch9               10    0 -3.1501e-02  2.5510e-02 -1.2349 0.2170584    
## arch10              11    0  5.3092e-03  2.5474e-02  0.2084 0.8349323    
## arch11              12    0 -6.9244e-02  2.5519e-02 -2.7134 0.0067304 ** 
## arch12              13    0 -5.8307e-02  2.5464e-02 -2.2898 0.0221601 *  
## arch13              14    0  1.2971e-02  2.5481e-02  0.5090 0.6108063    
## arch14              15    0  4.7133e-02  2.5500e-02  1.8483 0.0647332 .  
## arch15              16    0 -1.3172e-02  2.5466e-02 -0.5173 0.6050492    
## arch16              17    0 -1.3781e-03  2.5347e-02 -0.0544 0.9566490    
## arch17              18    0 -7.1532e-03  2.5337e-02 -0.2823 0.7777299    
## arch18              19    0  1.4591e-02  2.5113e-02  0.5810 0.5613181    
## arch19              20    0 -1.3033e-03  2.4949e-02 -0.0522 0.9583469    
## arch20              21    0  3.3739e-02  2.5022e-02  1.3484 0.1777225    
## arch21              22    0  4.3136e-02  2.4941e-02  1.7295 0.0839062 .  
## arch22              23    0  7.6424e-02  2.4907e-02  3.0683 0.0021880 ** 
## arch23              24    0 -1.6020e-02  2.5134e-02 -0.6374 0.5239504    
## arch24              25    0 -5.8471e-03  2.4441e-02 -0.2392 0.8109592    
## logEqWMA(12)        26    0  5.7886e-01  1.5930e-01  3.6337 0.0002880 ***
## logEqWMA(24)        27    0 -1.7785e-01  1.6675e-01 -1.0666 0.2863236    
## logEqWMA(168)       28    0  1.0513e-01  6.5938e-02  1.5944 0.1110440    
## dk2_load_fcast      29    0 -5.6489e-04  2.4635e-04 -2.2930 0.0219727 *  
## dk2_wind_fcast      30    0  1.0969e-03  2.4138e-04  4.5444 5.916e-06 ***
## dk2_se4             31    0  6.4519e-05  2.4905e-04  0.2591 0.7956249    
## dk2_se4_2           32    0 -6.6665e-04  1.6007e-04 -4.1646 3.282e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                    Chi-sq df    p-value
## Ljung-Box AR(1)    558.86  1 0.0000e+00
## Ljung-Box ARCH(25) 119.48 25 2.7423e-14
## 25 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## 
##   Path 1: 3 17 20 25 11 4 6 18 31 5 16 14 19 24 9 10 28 27 21 15 13 22 29 12 
##   Path 2: 4 20 17 11 31 25 6 18 5 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 3: 5 17 20 11 25 31 6 18 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 4: 6 20 17 11 25 31 5 18 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 5: 9 17 20 11 25 31 6 18 5 16 4 19 14 24 3 10 28 27 21 15 13 22 29 12 
##   Path 6: 10 11 20 17 25 31 5 6 18 9 19 4 14 16 24 3 28 27 21 15 13 22 29 12 
##   Path 7: 11 17 20 25 31 18 6 5 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 8: 12 17 20 6 11 31 19 25 4 14 16 5 24 9 18 3 10 28 21 27 15 22 13 29 
##   Path 9: 13 17 14 11 6 25 4 31 20 19 18 5 16 24 9 10 3 21 27 28 15 22 29 12 
##   Path 10: 14 20 17 11 25 31 18 5 6 4 16 19 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 11: 15 17 20 11 25 16 5 6 31 18 19 4 24 14 9 27 3 10 21 28 13 22 29 12 
##   Path 12: 16 20 17 11 25 31 6 5 18 4 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 13: 17 20 11 25 31 18 6 5 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 14: 18 20 17 11 31 25 6 5 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 15: 19 17 20 25 11 18 31 5 6 4 16 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 16: 20 17 11 25 31 18 6 5 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 17: 21 17 20 11 25 31 5 6 18 4 16 19 9 14 24 27 3 10 28 15 13 22 29 12 
##   Path 18: 22 20 17 11 25 31 4 6 5 18 16 19 14 9 24 27 3 10 28 21 13 15 29 12 
##   Path 19: 23 17 24 20 11 25 16 5 6 31 18 4 19 14 27 9 10 3 21 28 13 15 29 
##   Path 20: 24 20 17 11 31 6 5 18 25 4 19 16 14 9 3 10 28 27 21 15 13 22 29 12 
##   Path 21: 25 20 17 11 31 18 6 5 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
##   Path 22: 27 20 17 11 5 4 31 14 6 19 25 18 16 9 24 21 3 10 28 15 13 22 29 12 
##   Path 23: 28 20 17 25 11 18 31 5 6 4 16 14 19 24 9 10 3 27 21 15 13 22 29 12 
##   Path 24: 29 17 20 31 6 11 25 18 5 4 16 19 14 9 24 3 10 28 21 27 15 13 22 12 
##   Path 25: 31 20 17 11 25 18 6 5 4 16 19 14 9 24 3 10 28 27 21 15 13 22 29 12 
## 
## Terminal models:
## 
##         info(sc)      logl    n k
## spec 1: 7.840878 -6470.434 1658 8
## spec 2: 7.812686 -6443.357 1658 9
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch6   arch7   arch11   arch21   logEqWMA(12)   dk2_wind_fcast   dk2_se4_2
daily_dk2_vmod %>% plot

Replicate Intraday

Pulled from replication data available at:https://doi-org.ezproxy-prd.bodleian.ox.ac.uk/10.1016/j.eneco.2016.12.019

# Required including "here("data/raw/rintamaki_replication/data/" to data read commands in the listed files 
source(here("data/raw/rintamaki_replication/models/read_intraday_data.R"))

Models as in Rintamäki et al.

intraday_forms <- list(
  list(price_op1_dk1, cbind(wind_op1_dk1, exim_op1_dk1), 2, 1, 1, 1, 7),
  list(price_p_dk1, cbind(wind_p_dk1, exim_p_dk1), 2, 1, 1, 1, 7),
  list(price_op2_dk1, cbind(wind_op2_dk1, exim_op2_dk1), 2, 1, 1, 1, 7),
  list(price_p_dk2, cbind(wind_p_dk2, exim_p_dk2),  2, 1, 1, 1, 7),
  list(price_op2_dk2, cbind(wind_op2_dk2, exim_op2_dk2),  2, 1, 1, 1, 7),
  list(price_op1_de, cbind(wind_op1_de, exim_op1_de),  2, 1, 1, 1, 7),
  list(price_p_de, cbind(wind_p_de, exim_p_de), 2, 1, 1, 1, 7),
  list(price_op2_de, cbind(wind_op2_de, exim_op2_de),  2, 1, 1, 1, 7),
  list(fwd1(price_p_de), cbind(diff(solar_p_de), fwd1(exim_p_de)),  2, 1, 1, 1, 7), 
  list(price_p_de, cbind(res_p_de, exim_p_de), 2, 1, 1, 1, 7))


intraday_res <- lapply(intraday_forms, function(x) do.call(fitModel, x))

modelsummary(intraday_res)
 (1)   (2)   (3)   (4)   (5)   (6)   (7)   (8)   (9)   (10)
ar1 1.151 1.173 1.062 1.243 1.071 −0.556 0.973 0.591 0.955 0.882
(0.042) (0.042) (0.039) (0.046) (0.038) (0.068) (0.100) (0.145) (0.151) (0.129)
ar2 −0.192 −0.224 −0.093 −0.291 −0.107 0.295 −0.119 0.099 −0.139 −0.080
(0.034) (0.034) (0.035) (0.038) (0.034) (0.043) (0.054) (0.065) (0.077) (0.055)
ma1 −0.791 −0.762 −0.722 −0.750 −0.721 0.922 −0.674 −0.343 −0.602 −0.645
(0.031) (0.033) (0.029) (0.037) (0.029) (0.058) (0.093) (0.145) (0.145) (0.124)
sar1 0.948 0.954 0.970 0.961 0.963 0.917 0.934 0.961 0.928 0.932
(0.020) (0.011) (0.013) (0.010) (0.014) (0.023) (0.013) (0.013) (0.015) (0.014)
sma1 −0.879 −0.799 −0.936 −0.791 −0.919 −0.734 −0.591 −0.817 −0.609 −0.566
(0.031) (0.024) (0.019) (0.023) (0.021) (0.041) (0.033) (0.027) (0.036) (0.036)
intercept 4.147 4.169 4.041 4.076 3.930 5.879 4.981 5.172 3.704 7.037
(0.096) (0.084) (0.077) (0.112) (0.075) (0.138) (0.113) (0.081) (0.080) (0.161)
wind_op1_dk1 −0.109
(0.009)
exim_op1_dk1 −0.145
(0.018)
wind_p_dk1 −0.073
(0.005)
exim_p_dk1 −0.107
(0.009)
wind_op2_dk1 −0.065
(0.005)
exim_op2_dk1 −0.087
(0.009)
wind_p_dk2 −0.057
(0.004)
exim_p_dk2 −0.066
(0.012)
wind_op2_dk2 −0.054
(0.005)
exim_op2_dk2 −0.047
(0.012)
wind_op1_de −0.307
(0.016)
exim_op1_de 0.044
(0.011)
wind_p_de −0.153
(0.009)
exim_p_de 0.019 0.028
(0.007) (0.007)
wind_op2_de −0.187
(0.008)
exim_op2_de 0.044
(0.006)
ext1 −0.053
(0.014)
ext2 0.010
(0.008)
res_p_de −0.360
(0.016)
Num.Obs. 1813 1813 1813 1816 1816 1081 1081 1081 1080 1081
AIC 794.5 −1195.8 −1329.9 −1031.8 −840.6 603.6 −221.5 −827.0 −0.6 −377.6
BIC 844.0 −1146.3 −1280.4 −982.2 −791.1 648.5 −176.6 −782.2 44.3 −332.7
RMSE 0.30 0.17 0.17 0.18 0.19 0.32 0.22 0.16 0.24 0.20

Intraday price model with gets

for(cty in c("de","dk1", "dk2")){
  temp <- read.table(here(paste0("data/raw/rintamaki_replication/data/", cty, "_intraday.txt")), header=TRUE) %>% 
  tibble %>% 
  mutate(date = dmy(date)) %>% 
  arrange(date)
  
  assign(paste0("intraday_data_", cty), temp)
}

Germany

intraday_data_de %>% 
  select(date, op1_price, op2_price, p_price) %>% 
  pivot_longer(cols = !date) %>% 
  ggplot() +
  geom_line(aes(x = date, y = value, color = name)) +
  labs(main = "DE: Intraday Electricity Prices")

intraday_data_de %>% arrange(date) %>% identical(intraday_data_de)
## [1] TRUE
for(dep in c("op1_", "op2_", "p_")){
  temp <- intraday_data_de %>% 
    select(date, contains(dep))
  print(temp)
  
  dep2 <- as.matrix(temp[paste0(dep, "price")])
  vxregs <- as.matrix(temp[!(names(temp) %in% c("date", paste0(dep, "price")))])

  temp_mod <- arx(dep2, 
              ar = 1:7, 
              vxreg = vxregs,
              log.ewma = c(12, 24, 168)) 
  assign(paste0("de_", dep, "mod"), temp_mod)
  
  temp_vmod <- getsv(temp_mod, t.pval = 0.001, ar.LjungB = NULL, arch.LjungB = NULL)
  assign(paste0("de_", dep, "vmod"), temp_vmod)

  plot(temp_vmod)
  
}
## # A tibble: 1,081 × 8
##    date       op1_price op1_load op1_wind op1_res op1_wind_pen op1_res_pen
##    <date>         <dbl>    <dbl>    <dbl>   <dbl>        <dbl>       <dbl>
##  1 2012-01-01      2.61     10.5     8.74    8.74       -1.71       -1.71 
##  2 2012-01-02      2.08     10.5     9.34    9.34       -1.16       -1.16 
##  3 2012-01-03      3.34     10.7     9.29    9.29       -1.45       -1.45 
##  4 2012-01-04      2.38     10.7     9.95    9.95       -0.779      -0.779
##  5 2012-01-06      2.76     10.7     9.78    9.78       -0.934      -0.934
##  6 2012-01-07      3.14     10.7     9.47    9.47       -1.19       -1.19 
##  7 2012-01-08      1.27     10.6     9.55    9.55       -1.01       -1.01 
##  8 2012-01-09      3.64     10.8     8.13    8.13       -2.62       -2.62 
##  9 2012-01-10      3.53     10.8     9.28    9.28       -1.48       -1.48 
## 10 2012-01-11      3.63     10.8     9.03    9.03       -1.80       -1.80 
## # ℹ 1,071 more rows
## # ℹ 1 more variable: op1_exp <dbl>
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat  p-value    
## vconst              1    1  44.728126   8.822258 25.7041 3.98e-07 ***
## logEqWMA(12)        2    0   0.375280   0.118561  3.1653 0.001602 ** 
## logEqWMA(24)        3    0   0.272642   0.145346  1.8758 0.061006 .  
## logEqWMA(168)       4    0  -0.260084   0.139584 -1.8633 0.062749 .  
## op1_load            5    0   1.834264   5.291641  0.3466 0.728947    
## op1_wind            6    0 -32.008578  14.150534 -2.2620 0.023936 *  
## op1_res             7    0  25.968216  15.063890  1.7239 0.085076 .  
## op1_wind_pen        8    0  36.487859  16.937594  2.1543 0.031486 *  
## op1_res_pen         9    0 -29.950706  17.937438 -1.6697 0.095322 .  
## op1_exp            10    0   0.210658   0.065245  3.2287 0.001289 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                   Chi-sq df    p-value
## Ljung-Box AR(8)   13.207  8 1.0494e-01
## Ljung-Box ARCH(1) 16.937  1 3.8646e-05
## 9 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9
## 
##   Path 1: 2 5 9 7 4 -10 
##   Path 2: 3 5 4 9 7 
##   Path 3: 4 5 3 9 7 
##   Path 4: 5 3 4 9 7 
##   Path 5: 6 5 8 3 4 
##   Path 6: 7 9 5 3 4 
##   Path 7: 8 5 6 3 4 
##   Path 8: 9 7 5 3 4 
##   Path 9: 10 5 7 9 3 4 
## 
## Terminal models:
## 
##          info(sc)       logl   n k
## spec 1: 0.2711893 -105.82615 906 5
## spec 2: 0.2578840  -99.79886 906 5
## spec 3: 0.2619301 -101.63173 906 5
## spec 4: 0.2691108 -108.28912 906 4
## 
## Retained regressors (final model):
## 
##   vconst   logEqWMA(12)   op1_wind   op1_wind_pen   op1_exp
## # A tibble: 1,081 × 8
##    date       op2_price op2_load op2_wind op2_res op2_wind_pen op2_res_pen
##    <date>         <dbl>    <dbl>    <dbl>   <dbl>        <dbl>       <dbl>
##  1 2012-01-01      3.24     10.7     9.35    9.35       -1.31       -1.31 
##  2 2012-01-02      3.62     10.9     9.22    9.22       -1.67       -1.67 
##  3 2012-01-03      3.30     10.9    10.0    10.0        -0.861      -0.861
##  4 2012-01-04      3.40     10.9    10.0    10.0        -0.906      -0.906
##  5 2012-01-06      3.78     10.9     9.15    9.15       -1.73       -1.73 
##  6 2012-01-07      3.43     10.8     9.60    9.60       -1.20       -1.20 
##  7 2012-01-08      3.74     10.8     8.50    8.50       -2.32       -2.32 
##  8 2012-01-09      3.77     11.0     9.10    9.10       -1.85       -1.85 
##  9 2012-01-10      3.77     11.0     8.77    8.77       -2.21       -2.21 
## 10 2012-01-11      3.88     11.0     9.01    9.01       -1.96       -1.96 
## # ℹ 1,071 more rows
## # ℹ 1 more variable: op2_exp <dbl>
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat   p-value    
## vconst              1    1 -26.710453   9.200046  8.4291 0.0036926 ** 
## logEqWMA(12)        2    0   0.447505   0.134576  3.3253 0.0009191 ***
## logEqWMA(24)        3    0  -0.089010   0.169826 -0.5241 0.6003224    
## logEqWMA(168)       4    0  -0.056773   0.166933 -0.3401 0.7338646    
## op2_load            5    0   7.348365  14.049631  0.5230 0.6010833    
## op2_wind            6    0   5.878104  84.516825  0.0695 0.9445677    
## op2_res             7    0 -10.795241  88.475782 -0.1220 0.9029157    
## op2_wind_pen        8    0  -5.145274  92.221806 -0.0558 0.9555196    
## op2_res_pen         9    0  10.817351  96.267236  0.1124 0.9105568    
## op2_exp            10    0  -0.081546   0.072927 -1.1182 0.2637859    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                     Chi-sq df  p-value
## Ljung-Box AR(8)   17.37607  8 0.026423
## Ljung-Box ARCH(1)  0.43192  1 0.511047
## 8 path(s) to search
## Searching: 1 2 3 4 5 6 7 8

## 
##   Path 1: 3 8 6 7 4 10 5 
##   Path 2: 4 8 9 7 3 10 5 
##   Path 3: 5 6 4 8 3 10 9 
##   Path 4: 6 9 4 7 3 10 5 
##   Path 5: 7 9 6 4 3 10 5 
##   Path 6: 8 4 9 7 3 10 5 
##   Path 7: 9 6 4 7 3 10 5 
##   Path 8: 10 6 8 4 7 3 5 
## 
## Terminal models:
## 
##           info(sc)     logl   n k
## spec 1: -0.6506371 304.9522 906 3
## spec 2: -0.6521364 305.6314 906 3
## spec 3: -0.6513862 305.2915 906 3
## spec 4: -0.6516526 305.4122 906 3
## 
## Retained regressors (final model):
## 
##   vconst   logEqWMA(12)   op2_wind
## # A tibble: 1,081 × 10
##    date       p_price p_load p_wind p_res p_wind_pen p_res_pen  p_exp p_solar
##    <date>       <dbl>  <dbl>  <dbl> <dbl>      <dbl>     <dbl>  <dbl>   <dbl>
##  1 2012-01-01    2.93   10.6   9.21  9.25      -1.41     -1.37 -0.716    5.88
##  2 2012-01-02    3.91   11.0   9.07  9.13      -1.96     -1.90 -1.8      6.21
##  3 2012-01-03    3.74   11.0   9.94 10.0       -1.10     -1.04 -1.23     7.23
##  4 2012-01-04    3.85   11.0   9.96 10.0       -1.09     -1.04  0.296    7.05
##  5 2012-01-06    3.86   11.0   9.31  9.41      -1.68     -1.58  0.207    7.06
##  6 2012-01-07    3.68   10.9   9.63  9.65      -1.25     -1.23  0.662    5.59
##  7 2012-01-08    3.62   10.8   9.16  9.22      -1.63     -1.57  0.102    6.25
##  8 2012-01-09    4.03   11.1   8.60  8.68      -2.54     -2.47 -0.999    6.06
##  9 2012-01-10    3.99   11.1   8.70  8.86      -2.41     -2.25 -0.548    6.97
## 10 2012-01-11    3.99   11.1   9.12  9.22      -1.99     -1.90  0.992    6.82
## # ℹ 1,071 more rows
## # ℹ 1 more variable: p_solar_pen <dbl>
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat p-value  
## vconst              1    1   4.511175  10.345819  0.1901 0.66281  
## logEqWMA(12)        2    0   0.085960   0.156028  0.5509 0.58182  
## logEqWMA(24)        3    0   0.322139   0.207809  1.5502 0.12146  
## logEqWMA(168)       4    0   0.507133   0.272028  1.8643 0.06261 .
## p_load              5    0  15.501740  20.477384  0.7570 0.44924  
## p_wind              6    0  20.449252  14.873132  1.3749 0.16950  
## p_res               7    0 -33.370067  30.886945 -1.0804 0.28026  
## p_wind_pen          8    0 -20.524463  14.942126 -1.3736 0.16991  
## p_res_pen           9    0  33.958478  30.994689  1.0956 0.27354  
## p_exp              10    0   0.015834   0.065073  0.2433 0.80781  
## p_solar            11    0  -3.014614  19.392962 -0.1554 0.87650  
## p_solar_pen        12    0   2.665059  19.440005  0.1371 0.89099  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                    Chi-sq df    p-value
## Ljung-Box AR(8)   32.2207  8 8.5033e-05
## Ljung-Box ARCH(1)  6.1942  1 1.2817e-02
## 11 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11

## 
##   Path 1: 2 12 10 5 4 11 8 7 9 6 
##   Path 2: 3 12 10 5 8 6 7 2 9 
##   Path 3: 4 12 10 2 5 11 8 7 9 6 
##   Path 4: 5 12 10 2 4 11 8 7 9 6 
##   Path 5: 6 8 10 7 2 4 5 12 9 11 
##   Path 6: 7 10 5 2 9 8 4 6 12 11 
##   Path 7: 8 6 10 7 2 4 5 12 9 11 
##   Path 8: 9 10 5 2 7 8 4 6 12 11 
##   Path 9: 10 12 2 5 4 11 8 7 9 6 
##   Path 10: 11 10 2 5 4 12 8 7 9 6 
##   Path 11: 12 10 2 5 4 11 8 7 9 6 
## 
## Terminal models:
## 
##          info(sc)      logl   n k
## spec 1: 0.1188387 -47.02487 906 2
## spec 2: 0.1709549 -67.22899 906 3
## 
## Retained regressors (final model):
## 
##   vconst   logEqWMA(24)

DK1

intraday_data_dk1 %>% 
  select(date, op1_dk1_price, op2_dk1_price, p_dk1_price) %>% 
  pivot_longer(cols = !date) %>% 
  ggplot() +
  geom_line(aes(x = date, y = value, color = name)) +
  labs(main = "DK1: Intraday Electricity Prices")

intraday_data_dk1 %>% arrange(date) %>% identical(intraday_data_dk1)
## [1] TRUE
for(dep in c("op1_dk1_", "op2_dk1_", "p_dk1_")){
  temp <- intraday_data_dk1 %>% 
    select(date, contains(dep))
  print(temp)
  
  dep2 <- as.matrix(temp[paste0(dep, "price")])
  vxregs <- as.matrix(temp[!(names(temp) %in% c("date", paste0(dep, "price")))])

  temp_mod <- arx(dep2, 
              arch = 1:24, 
              vxreg = vxregs,
              log.ewma = c(12, 24, 168)) 
  assign(paste0("dk1_", dep, "mod"), temp_mod)
  
  temp_vmod <- getsv(temp_mod, t.pval = 0.001, ar.LjungB = NULL, arch.LjungB = NULL)
  assign(paste0("dk1_", dep, "vmod"), temp_vmod)

  plot(temp_vmod)
  
}
## # A tibble: 1,813 × 6
##    date       op1_dk1_price op1_dk1_load op1_dk1_wind op1_dk1_pen op1_dk1_exp
##    <date>             <dbl>        <dbl>        <dbl>       <dbl>       <dbl>
##  1 2010-01-01          3.40         7.51         5.52     -1.98          1.36
##  2 2010-01-02          3.64         7.53         6.13     -1.40          1.32
##  3 2010-01-03          3.63         7.45         5.04     -2.40          1.26
##  4 2010-01-04          3.57         7.70         5.62     -2.06          1.20
##  5 2010-01-05          3.72         7.78         5.05     -2.73          1.22
##  6 2010-01-06          3.59         7.71         6.80     -0.885         1.31
##  7 2010-01-07          3.65         7.71         6.16     -1.52          1.20
##  8 2010-01-08          3.73         7.73         5.69     -2.04          1.07
##  9 2010-01-09          3.27         7.53         6.65     -0.884         1.37
## 10 2010-01-10          2.71         7.59         7.53     -0.0543        1.37
## # ℹ 1,803 more rows
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat   p-value    
## vconst              1    1  2.3793677  3.3482117  0.5050  0.477308    
## arch1               2    0  0.2561784  0.0249455 10.2695 < 2.2e-16 ***
## arch2               3    0  0.0702032  0.0257117  2.7304  0.006395 ** 
## arch3               4    0  0.0326858  0.0257792  1.2679  0.205013    
## arch4               5    0  0.0779540  0.0257923  3.0224  0.002548 ** 
## arch5               6    0  0.0468439  0.0258140  1.8147  0.069761 .  
## arch6               7    0  0.0725267  0.0258280  2.8081  0.005044 ** 
## arch7               8    0  0.1262696  0.0259001  4.8753 1.194e-06 ***
## arch8               9    0  0.0599773  0.0261585  2.2928  0.021985 *  
## arch9              10    0  0.0152003  0.0261618  0.5810  0.561313    
## arch10             11    0  0.0043686  0.0261433  0.1671  0.867310    
## arch11             12    0  0.0109449  0.0261860  0.4180  0.676026    
## arch12             13    0 -0.0124875  0.0261513 -0.4775  0.633064    
## arch13             14    0 -0.0131047  0.0259864 -0.5043  0.614125    
## arch14             15    0  0.0614443  0.0260188  2.3615  0.018318 *  
## arch15             16    0 -0.0293628  0.0260536 -1.1270  0.259902    
## arch16             17    0 -0.0276526  0.0260928 -1.0598  0.289405    
## arch17             18    0 -0.0071264  0.0260666 -0.2734  0.784587    
## arch18             19    0 -0.0610663  0.0258240 -2.3647  0.018162 *  
## arch19             20    0  0.0453823  0.0257766  1.7606  0.078495 .  
## arch20             21    0  0.0458420  0.0259069  1.7695  0.077001 .  
## arch21             22    0 -0.0044539  0.0258440 -0.1723  0.863194    
## arch22             23    0  0.0153714  0.0258394  0.5949  0.552005    
## arch23             24    0  0.0227798  0.0258758  0.8804  0.378800    
## arch24             25    0 -0.0145395  0.0252682 -0.5754  0.565096    
## logEqWMA(12)       26    0 -0.0482179  0.0984396 -0.4898  0.624326    
## logEqWMA(24)       27    0 -0.0467004  0.1076791 -0.4337  0.664564    
## logEqWMA(168)      28    0 -0.0206952  0.1328593 -0.1558  0.876236    
## op1_dk1_load       29    0 -2.0278378  2.4611786 -0.8239  0.410101    
## op1_dk1_wind       30    0  1.8287648  2.5813514  0.7085  0.478767    
## op1_dk1_pen        31    0 -1.8139156  2.5755766 -0.7043  0.481363    
## op1_dk1_exp        32    0  0.3664050  0.0716448  5.1142 3.527e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                       Chi-sq df p-value
## Ljung-Box AR(1)    199.48723  1       0
## Ljung-Box ARCH(25)   0.64095 25       1
## 28 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
## 
##   Path 1: 3 22 26 28 11 18 12 14 25 13 31 30 23 29 10 17 24 27 16 21 6 4 20 19 15 9 
##   Path 2: 4 28 18 11 22 26 12 13 25 14 23 10 31 30 29 24 17 16 27 20 6 21 19 9 15 
##   Path 3: 5 26 22 28 11 18 23 13 25 14 10 31 30 12 29 24 16 27 17 21 4 20 19 15 9 6 
##   Path 4: 6 11 28 22 26 18 13 12 14 25 23 10 31 30 29 24 17 16 4 27 21 9 20 19 15 
##   Path 5: 7 28 26 14 18 11 22 12 13 23 10 31 30 25 29 24 16 27 4 17 20 9 21 19 6 15 
##   Path 6: 9 28 26 11 18 22 12 13 14 31 30 25 23 29 16 24 10 17 27 4 21 6 20 19 15 
##   Path 7: 10 28 22 18 11 26 12 14 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 8: 11 28 22 18 12 26 14 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 9: 12 28 22 11 18 26 14 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 10: 13 28 11 22 18 12 26 25 10 14 23 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 11: 14 28 11 22 18 26 12 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 12: 15 22 14 28 27 11 18 13 12 31 30 23 16 10 25 29 24 17 26 4 20 6 19 21 9 
##   Path 13: 16 28 11 22 18 26 12 23 14 10 25 13 31 30 29 24 17 4 27 20 6 21 19 9 15 
##   Path 14: 17 11 28 22 26 12 18 10 14 23 25 13 31 30 29 24 16 4 27 20 6 21 19 9 15 
##   Path 15: 18 11 28 22 12 26 14 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 16: 19 11 28 12 22 26 23 10 14 18 31 30 29 13 25 24 16 20 4 17 27 21 6 9 15 
##   Path 17: 20 22 28 11 18 13 27 12 23 14 25 10 31 30 29 24 16 26 4 17 6 21 19 9 15 
##   Path 18: 21 28 11 22 27 18 13 12 14 25 23 10 31 30 29 24 17 16 26 4 6 9 20 19 15 
##   Path 19: 22 28 11 18 12 26 14 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 20: 23 22 28 11 18 12 13 27 10 14 25 31 30 24 29 17 26 4 16 20 6 21 19 9 15 
##   Path 21: 24 11 22 28 18 27 13 12 25 23 14 31 30 10 29 17 26 4 16 20 6 21 19 9 15 
##   Path 22: 25 11 28 22 18 26 12 14 10 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 23: 26 11 22 28 18 12 14 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 24: 27 11 22 28 18 13 12 23 10 14 25 31 30 24 29 17 26 4 16 20 6 21 19 9 15 
##   Path 25: 28 11 22 18 12 26 14 10 25 23 13 31 30 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 26: 29 28 11 22 18 26 12 14 23 25 10 13 30 31 24 17 16 4 27 20 6 21 19 9 15 
##   Path 27: 30 28 11 31 22 18 26 12 14 10 23 25 13 29 24 17 16 4 27 20 6 21 19 9 15 
##   Path 28: 31 28 11 22 30 18 26 12 14 10 23 25 13 29 24 17 16 4 27 20 6 21 19 9 15 
## 
## Terminal models:
## 
##         info(sc)      logl    n k
## spec 1: 1.326841 -1069.110 1645 6
## spec 2: 1.288113 -1033.554 1645 7
## spec 3: 1.285985 -1035.506 1645 6
## spec 4: 1.312750 -1057.520 1645 6
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch2   arch6   arch7   op1_dk1_exp
## # A tibble: 1,813 × 6
##    date       op2_dk1_price op2_dk1_load op2_dk1_wind op2_dk1_pen op2_dk1_exp
##    <date>             <dbl>        <dbl>        <dbl>       <dbl>       <dbl>
##  1 2010-01-01          3.66         7.67         5.91      -1.76        1.37 
##  2 2010-01-02          3.75         7.68         6.09      -1.60       -0.28 
##  3 2010-01-03          3.70         7.72         5.18      -2.52        0.567
##  4 2010-01-04          3.73         7.91         5.57      -2.32        1.07 
##  5 2010-01-05          3.67         7.93         7.05      -0.863       1.15 
##  6 2010-01-06          3.85         7.87         6.42      -1.45       -0.393
##  7 2010-01-07          3.85         7.87         5.41      -2.45        0.223
##  8 2010-01-08          3.67         7.89         6.44      -1.44        1.37 
##  9 2010-01-09          3.69         7.69         7.39      -0.301       1.37 
## 10 2010-01-10          3.78         7.67         7.33      -0.329       1.34 
## # ℹ 1,803 more rows
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat   p-value    
## vconst              1    1 11.3715536  3.5303140 10.3756 0.0012769 ** 
## arch1               2    0  0.2612518  0.0249067 10.4892 < 2.2e-16 ***
## arch2               3    0  0.0589568  0.0257370  2.2907 0.0221070 *  
## arch3               4    0  0.0340999  0.0258980  1.3167 0.1881259    
## arch4               5    0  0.0912617  0.0258349  3.5325 0.0004232 ***
## arch5               6    0  0.0427851  0.0259183  1.6508 0.0989802 .  
## arch6               7    0  0.0792675  0.0260229  3.0461 0.0023561 ** 
## arch7               8    0  0.1558550  0.0261630  5.9571 3.146e-09 ***
## arch8               9    0  0.0080252  0.0264105  0.3039 0.7612709    
## arch9              10    0  0.0098906  0.0263828  0.3749 0.7077916    
## arch10             11    0 -0.0065203  0.0263970 -0.2470 0.8049331    
## arch11             12    0 -0.0112452  0.0264803 -0.4247 0.6711383    
## arch12             13    0 -0.0370595  0.0265144 -1.3977 0.1623915    
## arch13             14    0  0.0102275  0.0260190  0.3931 0.6943146    
## arch14             15    0  0.0354000  0.0260609  1.3584 0.1745407    
## arch15             16    0  0.0278899  0.0261398  1.0670 0.2861539    
## arch16             17    0 -0.0340228  0.0261496 -1.3011 0.1934169    
## arch17             18    0 -0.0163070  0.0261770 -0.6229 0.5334058    
## arch18             19    0  0.0344285  0.0258901  1.3298 0.1837736    
## arch19             20    0  0.0110671  0.0258199  0.4286 0.6682522    
## arch20             21    0  0.0290615  0.0256445  1.1332 0.2572800    
## arch21             22    0  0.0091425  0.0255453  0.3579 0.7204682    
## arch22             23    0  0.0468511  0.0254935  1.8378 0.0662811 .  
## arch23             24    0  0.0144852  0.0254993  0.5681 0.5700731    
## arch24             25    0 -0.0398882  0.0246529 -1.6180 0.1058601    
## logEqWMA(12)       26    0  0.1645591  0.1084633  1.5172 0.1294155    
## logEqWMA(24)       27    0 -0.2926494  0.1136420 -2.5752 0.0101070 *  
## logEqWMA(168)      28    0  0.2223230  0.0836550  2.6576 0.0079472 ** 
## op2_dk1_load       29    0  1.8461104  4.9186617  0.3753 0.7074661    
## op2_dk1_wind       30    0 -3.1954627  4.9991348 -0.6392 0.5227815    
## op2_dk1_pen        31    0  3.1621801  4.9971596  0.6328 0.5269569    
## op2_dk1_exp        32    0  0.4463530  0.0611518  7.2991 4.528e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                      Chi-sq df p-value
## Ljung-Box AR(1)    267.3491  1       0
## Ljung-Box ARCH(25)   1.2304 25       1
## 27 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

## 
##   Path 1: 3 11 9 29 20 22 14 18 12 24 10 16 17 19 25 21 13 6 4 15 23 27 26 28 -31 -30 
##   Path 2: 4 11 9 14 29 20 10 22 12 18 24 16 17 19 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 3: 6 9 11 22 29 10 14 12 20 24 18 16 17 19 13 4 21 25 15 26 27 23 28 31 30 -3 
##   Path 4: 7 11 10 9 29 20 22 12 24 18 14 16 4 17 19 13 25 21 15 26 27 23 6 -28 
##   Path 5: 9 11 22 29 10 14 20 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 6: 10 11 22 9 29 14 20 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 7: 11 9 22 29 10 14 20 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 8: 12 11 9 22 29 10 14 20 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 9: 13 14 20 11 9 22 29 10 24 18 12 19 16 26 21 17 4 25 15 6 27 23 28 31 30 -3 
##   Path 10: 14 11 9 22 29 10 20 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 11: 15 11 9 29 20 10 12 22 24 18 14 4 17 16 19 13 26 21 27 6 23 25 28 31 30 -3 
##   Path 12: 16 11 22 10 12 29 14 20 9 18 24 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 13: 17 10 11 9 22 29 14 24 20 12 18 16 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 14: 18 9 22 11 10 29 14 20 12 24 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 15: 19 12 11 9 22 29 14 18 10 24 20 16 17 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 16: 20 11 9 22 29 10 14 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 17: 21 11 9 29 10 12 14 24 22 18 20 16 17 4 19 13 26 25 15 6 27 23 28 31 30 -3 
##   Path 18: 22 11 9 29 10 14 20 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 19: 23 11 29 10 20 14 12 9 18 22 24 26 13 19 17 16 21 25 4 6 27 15 28 31 30 -3 
##   Path 20: 24 11 9 29 22 14 10 20 12 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 21: 25 24 11 10 22 29 20 9 14 12 18 19 16 17 4 21 13 6 15 26 27 23 28 31 30 -3 
##   Path 22: 26 11 12 22 20 14 29 24 9 18 10 16 13 19 21 17 4 25 15 6 27 23 28 31 30 -3 
##   Path 23: 27 22 20 11 14 24 12 29 26 9 10 16 21 18 19 13 4 15 17 6 23 25 28 31 30 -3 
##   Path 24: 28 11 10 9 22 14 12 29 20 18 24 16 17 4 19 25 13 21 26 15 27 6 23 31 30 -3 
##   Path 25: 29 11 9 22 10 14 20 12 24 18 16 17 19 4 13 21 26 25 15 6 27 23 28 31 30 -3 
##   Path 26: 30 11 9 22 10 14 20 12 24 18 31 16 17 19 4 13 21 26 25 15 6 27 23 28 29 -3 
##   Path 27: 31 11 9 22 10 14 20 12 24 18 30 16 17 19 4 13 21 26 25 15 6 27 23 28 29 -3 
## 
## Terminal models:
## 
##          info(sc)      logl    n k
## spec 1: 0.3288111 -240.8251 1645 8
## spec 2: 0.2738499 -199.3223 1645 7
## spec 3: 0.3020284 -215.0936 1645 9
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch2   arch4   arch6   arch7   op2_dk1_exp
## # A tibble: 1,813 × 6
##    date       p_dk1_price p_dk1_load p_dk1_wind p_dk1_pen p_dk1_exp
##    <date>           <dbl>      <dbl>      <dbl>     <dbl>     <dbl>
##  1 2010-01-01        3.62       7.70       6.07    -1.62     1.36  
##  2 2010-01-02        3.79       7.82       6.59    -1.23     0.0989
##  3 2010-01-03        3.77       7.78       4.75    -3.05     0.431 
##  4 2010-01-04        3.83       8.11       5.46    -2.65     0.351 
##  5 2010-01-05        3.93       8.16       6.57    -1.58     0.186 
##  6 2010-01-06        3.90       8.09       6.66    -1.43     0.375 
##  7 2010-01-07        4.10       8.09       5.77    -2.31     0.407 
##  8 2010-01-08        3.96       8.11       6.30    -1.80     0.689 
##  9 2010-01-09        3.74       7.85       7.19    -0.661    1.16  
## 10 2010-01-10        3.61       7.83       7.51    -0.325    1.26  
## # ℹ 1,803 more rows
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat   p-value    
## vconst              1    1  2.1032495  2.3228813  0.8198   0.36523    
## arch1               2    0  0.2458311  0.0252107  9.7511 < 2.2e-16 ***
## arch2               3    0  0.0308680  0.0261088  1.1823   0.23727    
## arch3               4    0 -0.0408429  0.0260847 -1.5658   0.11760    
## arch4               5    0  0.0236593  0.0260854  0.9070   0.36455    
## arch5               6    0  0.0018745  0.0259277  0.0723   0.94237    
## arch6               7    0  0.0636568  0.0259222  2.4557   0.01417 *  
## arch7               8    0  0.1312654  0.0259416  5.0600 4.671e-07 ***
## arch8               9    0  0.0371864  0.0261736  1.4208   0.15558    
## arch9              10    0 -0.0492745  0.0261074 -1.8874   0.05929 .  
## arch10             11    0  0.0017575  0.0261872  0.0671   0.94650    
## arch11             12    0 -0.0014691  0.0262150 -0.0560   0.95532    
## arch12             13    0 -0.0247535  0.0262293 -0.9437   0.34545    
## arch13             14    0  0.0159174  0.0258368  0.6161   0.53793    
## arch14             15    0  0.0465100  0.0259622  1.7915   0.07341 .  
## arch15             16    0  0.0214711  0.0259550  0.8272   0.40822    
## arch16             17    0 -0.0177906  0.0259543 -0.6855   0.49315    
## arch17             18    0  0.0194748  0.0259701  0.7499   0.45343    
## arch18             19    0  0.0362382  0.0257522  1.4072   0.15957    
## arch19             20    0 -0.0144542  0.0256796 -0.5629   0.57361    
## arch20             21    0  0.0320960  0.0256915  1.2493   0.21174    
## arch21             22    0  0.0585353  0.0256475  2.2823   0.02260 *  
## arch22             23    0 -0.0136065  0.0257055 -0.5293   0.59665    
## arch23             24    0 -0.0108295  0.0256315 -0.4225   0.67271    
## arch24             25    0 -0.0032828  0.0248567 -0.1321   0.89495    
## logEqWMA(12)       26    0  0.2696182  0.1403244  1.9214   0.05486 .  
## logEqWMA(24)       27    0 -0.2107270  0.1477210 -1.4265   0.15391    
## logEqWMA(168)      28    0  0.0411078  0.1304753  0.3151   0.75276    
## p_dk1_load         29    0 -6.9813485  4.5056725 -1.5495   0.12147    
## p_dk1_wind         30    0  6.7200791  4.4792253  1.5003   0.13374    
## p_dk1_pen          31    0 -6.7442198  4.4821573 -1.5047   0.13260    
## p_dk1_exp          32    0  0.3638595  0.0618754  5.8805 4.961e-09 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                    Chi-sq df    p-value
## Ljung-Box AR(1)    408.29  1 0.0000e+00
## Ljung-Box ARCH(25) 102.21 25 2.6581e-11
## 28 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

## 
##   Path 1: 3 6 11 25 12 28 24 20 23 14 17 18 16 5 13 4 21 19 27 9 30 31 29 10 26 15 22 
##   Path 2: 4 11 12 6 25 28 24 20 14 5 23 18 17 16 13 3 21 19 27 9 30 31 29 10 26 15 22 
##   Path 3: 5 12 11 25 6 28 24 20 23 14 17 18 16 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 4: 6 12 11 25 28 24 20 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 5: 7 25 11 12 28 24 20 6 23 17 16 18 5 13 14 3 4 19 9 21 27 30 31 29 10 15 26 22 
##   Path 6: 9 6 11 12 25 28 24 20 23 14 17 18 5 16 13 21 3 4 19 27 30 31 29 10 26 15 22 
##   Path 7: 10 12 6 25 11 28 23 20 14 18 24 16 17 13 5 3 9 21 4 19 27 30 31 29 26 15 22 
##   Path 8: 11 12 6 25 28 24 20 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 9: 12 11 6 25 28 24 20 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 10: 13 6 11 25 12 28 14 24 23 20 18 17 16 5 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 11: 14 12 11 6 25 28 24 20 23 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 12: 15 6 12 11 25 28 23 20 17 18 24 5 13 14 16 3 4 21 27 19 30 31 29 9 10 26 22 
##   Path 13: 16 12 11 6 25 28 24 23 20 17 18 14 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 14: 17 11 12 6 25 28 20 23 18 24 16 14 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 15: 18 12 25 6 11 28 24 20 17 23 16 14 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 16: 19 25 6 11 12 20 28 24 14 23 16 17 13 18 5 3 4 21 27 9 30 31 29 10 26 15 22 
##   Path 17: 20 6 11 12 25 28 24 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 18: 21 12 11 6 25 20 28 23 24 18 17 16 14 13 5 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 19: 22 12 6 23 11 25 28 24 20 14 18 17 16 5 13 3 4 19 27 30 31 29 21 9 10 26 15 
##   Path 20: 23 6 11 12 25 28 20 24 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 21: 24 12 6 11 25 28 20 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 22: 25 12 11 6 28 24 20 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 23: 26 27 12 25 11 6 13 14 28 18 24 16 17 20 21 23 4 19 3 10 9 5 30 31 29 15 22 
##   Path 24: 27 12 28 11 6 25 14 18 24 16 13 17 20 21 23 5 4 3 19 9 30 31 29 10 26 15 22 
##   Path 25: 28 12 11 6 25 24 20 23 14 18 17 16 5 13 21 3 4 19 27 9 30 31 29 10 26 15 22 
##   Path 26: 29 12 11 6 25 28 24 20 23 14 17 18 16 31 30 5 13 21 3 4 19 27 9 10 26 15 22 
##   Path 27: 30 12 11 6 25 28 31 24 20 23 14 17 18 16 5 29 13 21 3 4 19 27 9 10 26 15 22 
##   Path 28: 31 12 11 6 25 28 30 24 20 23 14 17 18 16 5 29 13 21 3 4 19 27 9 10 26 15 22 
## 
## Terminal models:
## 
##                  info(sc)      logl    n k
## spec 1 (1-cut): 0.4783919 -378.6664 1645 4
## spec 2:         0.4635755 -362.7771 1645 5
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch6   arch7   p_dk1_exp

DK2

intraday_data_dk2 %>% 
  select(date, op1_dk2_price, op2_dk2_price, p_dk2_price) %>% 
  pivot_longer(cols = !date) %>% 
  ggplot() +
  geom_line(aes(x = date, y = value, color = name)) +
  labs(main = "dk2: Intraday Electricity Prices")

intraday_data_dk2 %>% arrange(date) %>% identical(intraday_data_dk2)
## [1] TRUE
for(dep in c("op1_dk2_", "op2_dk2_", "p_dk2_")){
  temp <- intraday_data_dk2 %>% 
    select(date, contains(dep))
  print(temp)
  
  dep2 <- as.matrix(temp[paste0(dep, "price")])
  vxregs <- as.matrix(temp[!(names(temp) %in% c("date", paste0(dep, "price")))])

  temp_mod <- arx(dep2, 
              arch = 1:24, 
              vxreg = vxregs,
              log.ewma = c(12, 24, 168)) 
  assign(paste0("dk2_", dep, "mod"), temp_mod)
  
  temp_vmod <- getsv(temp_mod, t.pval = 0.001, ar.LjungB = NULL, arch.LjungB = NULL)
  assign(paste0("dk2_", dep, "vmod"), temp_vmod)

  printtex(temp_vmod)
  plot(temp_vmod)
  
}
## # A tibble: 1,816 × 6
##    date       op1_dk2_price op1_dk2_load op1_dk2_wind op1_dk2_pen op1_dk2_exp
##    <date>             <dbl>        <dbl>        <dbl>       <dbl>       <dbl>
##  1 2010-01-01          3.67         7.28         4.82      -2.45        0.497
##  2 2010-01-02          3.68         7.29         4.90      -2.40        0.481
##  3 2010-01-03          3.70         7.25         4.17      -3.07        0.687
##  4 2010-01-04          3.75         7.41         5.30      -2.10        0.884
##  5 2010-01-05          3.76         7.45         4.80      -2.62        0.681
##  6 2010-01-06          3.78         7.42         4.91      -2.48        0.910
##  7 2010-01-07          4.07         7.42         4.64      -2.77        0.813
##  8 2010-01-08          5.15         7.47         4.51      -2.96        1.05 
##  9 2010-01-09          3.83         7.29         6.05      -1.25        1.35 
## 10 2010-01-10          3.81         7.36         6.43      -0.936       1.22 
## # ℹ 1,806 more rows
## Warning in arx(dep2, arch = 1:24, vxreg = vxregs, log.ewma = c(12, 24, 168)): 
## 
## New default 'mc = TRUE' in arx() as of version 0.28
## This warning only appears the first time arx() is invoked
## To suppress this warning, set options(mc.warning = FALSE)
## GUM log-variance equation:
## 
##               reg.no. keep        coef   std.error  t-stat   p-value    
## vconst              1    1  1.3775e+00  3.2047e+00  0.1848 0.6673201    
## arch1               2    0  2.7540e-01  2.5076e-02 10.9827 < 2.2e-16 ***
## arch2               3    0  6.8394e-02  2.6055e-02  2.6250 0.0087469 ** 
## arch3               4    0  4.7213e-02  2.6052e-02  1.8123 0.0701262 .  
## arch4               5    0  8.1431e-02  2.6054e-02  3.1255 0.0018068 ** 
## arch5               6    0  2.9337e-02  2.6135e-02  1.1225 0.2618147    
## arch6               7    0  5.9756e-02  2.6075e-02  2.2917 0.0220516 *  
## arch7               8    0  1.1797e-01  2.6233e-02  4.4969 7.386e-06 ***
## arch8               9    0  8.3561e-02  2.6439e-02  3.1606 0.0016039 ** 
## arch9              10    0  9.0971e-05  2.6472e-02  0.0034 0.9972585    
## arch10             11    0  7.1374e-03  2.6445e-02  0.2699 0.7872730    
## arch11             12    0 -2.9062e-02  2.6341e-02 -1.1033 0.2700461    
## arch12             13    0 -7.7851e-04  2.6467e-02 -0.0294 0.9765381    
## arch13             14    0 -1.0896e-02  2.6129e-02 -0.4170 0.6767088    
## arch14             15    0  7.1120e-02  2.6117e-02  2.7232 0.0065353 ** 
## arch15             16    0 -7.7954e-03  2.6095e-02 -0.2987 0.7651820    
## arch16             17    0 -3.7408e-02  2.6076e-02 -1.4346 0.1516022    
## arch17             18    0  4.9833e-03  2.5943e-02  0.1921 0.8476969    
## arch18             19    0 -2.0754e-02  2.5696e-02 -0.8077 0.4193877    
## arch19             20    0 -8.3757e-03  2.5669e-02 -0.3263 0.7442464    
## arch20             21    0  5.2119e-02  2.5784e-02  2.0213 0.0434089 *  
## arch21             22    0  2.4022e-02  2.5755e-02  0.9327 0.3511063    
## arch22             23    0  1.9484e-02  2.5733e-02  0.7571 0.4490754    
## arch23             24    0  3.3204e-02  2.5659e-02  1.2941 0.1958319    
## arch24             25    0 -5.7696e-02  2.4732e-02 -2.3328 0.0197790 *  
## logEqWMA(12)       26    0  1.2469e-01  1.0170e-01  1.2260 0.2203690    
## logEqWMA(24)       27    0 -1.6695e-01  1.0752e-01 -1.5528 0.1206776    
## logEqWMA(168)      28    0  1.3413e-01  1.1457e-01  1.1708 0.2418504    
## op1_dk2_load       29    0 -6.5340e-01  2.4374e+00 -0.2681 0.7886813    
## op1_dk2_wind       30    0  6.2635e-01  2.4637e+00  0.2542 0.7993509    
## op1_dk2_pen        31    0 -5.3993e-01  2.4566e+00 -0.2198 0.8260633    
## op1_dk2_exp        32    0  2.8607e-01  8.5856e-02  3.3320 0.0008818 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                     Chi-sq df  p-value
## Ljung-Box AR(1)    331.476  1 0.000000
## Ljung-Box ARCH(25)  41.935 25 0.018266
## 28 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
## 
##   Path 1: 3 13 10 18 31 29 20 16 11 14 23 19 22 6 28 12 17 24 26 27 30 21 25 15 4 
##   Path 2: 4 10 13 31 29 16 18 20 11 14 23 19 22 6 12 28 26 27 24 30 17 21 25 15 3 
##   Path 3: 5 10 13 18 31 29 11 20 14 16 19 23 22 12 28 26 27 24 17 30 21 6 25 15 -3 -4 
##   Path 4: 6 10 13 18 20 31 11 29 16 14 23 19 22 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 5: 7 13 10 18 14 31 16 11 29 20 23 19 22 28 12 26 27 24 6 30 17 4 21 25 15 
##   Path 6: 9 13 16 11 31 18 29 20 14 10 19 22 6 23 17 28 12 24 27 26 30 4 21 25 15 
##   Path 7: 10 13 18 31 29 11 16 20 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 8: 11 13 10 18 31 29 16 20 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 9: 12 10 11 18 13 31 29 16 20 14 23 6 22 19 26 28 27 24 30 17 4 21 25 15 3 
##   Path 10: 13 10 18 31 29 11 16 20 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 11: 14 10 13 18 31 29 11 16 20 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 12: 15 10 13 14 18 16 31 20 29 11 19 23 26 27 28 12 6 22 24 17 30 4 21 25 3 
##   Path 13: 16 10 13 18 31 29 11 20 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 14: 17 18 13 10 11 31 29 20 14 16 23 19 22 6 28 12 26 24 27 30 4 21 25 15 3 
##   Path 15: 18 10 13 31 29 11 16 20 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 16: 19 10 18 13 31 11 29 16 14 20 23 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 17: 20 10 13 18 31 29 11 16 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 18: 21 10 20 13 18 14 11 16 31 29 19 23 26 27 28 12 6 24 22 17 30 4 25 15 3 
##   Path 19: 22 10 13 31 18 11 20 16 29 14 19 23 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 20: 23 10 13 18 31 16 29 11 20 14 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
##   Path 21: 24 13 10 31 18 16 20 29 11 14 19 22 6 23 26 27 28 12 30 17 4 21 25 15 3 
##   Path 22: 25 10 18 13 11 31 16 14 29 20 23 24 19 22 6 28 12 26 27 21 4 30 17 15 3 
##   Path 23: 26 18 13 31 10 29 20 16 14 11 23 22 19 27 28 6 12 24 30 17 4 21 25 15 3 
##   Path 24: 27 18 10 13 31 26 11 16 20 23 29 14 22 19 28 6 12 24 30 17 4 21 25 15 3 
##   Path 25: 28 13 10 18 31 29 20 16 11 14 23 19 6 22 12 26 27 24 30 17 4 21 25 15 3 
##   Path 26: 29 10 13 30 18 11 16 20 14 23 19 22 6 28 12 26 27 24 17 31 4 21 25 15 3 
##   Path 27: 30 10 13 29 18 11 16 20 14 23 19 22 6 28 12 26 27 24 17 31 4 21 25 15 3 
##   Path 28: 31 10 13 18 29 11 16 20 14 23 19 22 6 28 12 26 27 24 30 17 4 21 25 15 3 
## 
## Terminal models:
## 
##          info(sc)      logl    n k
## spec 1: 0.8542536 -677.9794 1648 7
## spec 2: 0.8530321 -673.2692 1648 8
## spec 3: 0.8526186 -676.6321 1648 7
## spec 4: 0.8551795 -678.7423 1648 7
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch2   arch4   arch7   arch8   op1_dk2_exp 
## % Date: Fri Sep 13 15:12:38 2024 
## % LaTeX code generated in R 4.3.1 by the gets package
## % Note: The {eqnarray} environment requires the {amsmath} package
## \begin{eqnarray}
##   \widehat{e} &=& \underset{(0.0244)}{0.6929} + \underset{(0.0242)}{0.2919}arch1 + \underset{(0.0229)}{0.0881}arch2 + \underset{(0.0240)}{0.1089}arch4 + \underset{(0.0244)}{0.1600}arch7 + \underset{(0.0725)}{0.0981}arch8 + \underset{(NA)}{0.3284}op1_dk2_exp - \underset{(NA)}{1.6291}Elnz2 \\[2mm] 
##    && R^2=NA \qquad \widehat{\sigma}=0.4253 \qquad LogL=-676.6321 \qquad T = 1648 \nonumber \\ 
## \end{eqnarray}
## # A tibble: 1,816 × 6
##    date       op2_dk2_price op2_dk2_load op2_dk2_wind op2_dk2_pen op2_dk2_exp
##    <date>             <dbl>        <dbl>        <dbl>       <dbl>       <dbl>
##  1 2010-01-01          3.70         7.45         4.69       -2.76      0.271 
##  2 2010-01-02          3.79         7.48         5.06       -2.43      0.0560
##  3 2010-01-03          3.76         7.52         4.15       -3.34      0.524 
##  4 2010-01-04          3.87         7.60         4.52       -3.09      0.679 
##  5 2010-01-05          3.86         7.61         4.37       -3.25      0.606 
##  6 2010-01-06          3.85         7.67         4.32       -3.34      0.441 
##  7 2010-01-07          4.19         7.67         3.98       -3.69      0.461 
##  8 2010-01-08          4.16         7.63         5.79       -1.83      0.964 
##  9 2010-01-09          3.82         7.52         6.37       -1.14      0.895 
## 10 2010-01-10          3.83         7.55         6.28       -1.27      0.961 
## # ℹ 1,806 more rows
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat   p-value    
## vconst              1    1  6.8839994  3.0074516  5.2394 0.0220805 *  
## arch1               2    0  0.3019695  0.0250214 12.0684 < 2.2e-16 ***
## arch2               3    0  0.0943811  0.0261028  3.6157 0.0003087 ***
## arch3               4    0  0.0373940  0.0262194  1.4262 0.1540045    
## arch4               5    0  0.0870589  0.0262080  3.3218 0.0009142 ***
## arch5               6    0  0.0227230  0.0263097  0.8637 0.3878954    
## arch6               7    0  0.1007213  0.0263248  3.8261 0.0001351 ***
## arch7               8    0  0.0824414  0.0264500  3.1169 0.0018600 ** 
## arch8               9    0 -0.0050700  0.0265247 -0.1911 0.8484376    
## arch9              10    0 -0.0592506  0.0264328 -2.2416 0.0251257 *  
## arch10             11    0  0.0147485  0.0264664  0.5573 0.5774308    
## arch11             12    0  0.0058355  0.0264855  0.2203 0.8256421    
## arch12             13    0 -0.0448749  0.0264398 -1.6972 0.0898422 .  
## arch13             14    0  0.0554363  0.0260917  2.1247 0.0337650 *  
## arch14             15    0  0.0465621  0.0262021  1.7770 0.0757498 .  
## arch15             16    0  0.0248170  0.0261698  0.9483 0.3431156    
## arch16             17    0 -0.0611241  0.0261025 -2.3417 0.0193173 *  
## arch17             18    0 -0.0231541  0.0261823 -0.8843 0.3766433    
## arch18             19    0 -0.0039303  0.0261349 -0.1504 0.8804792    
## arch19             20    0  0.0296156  0.0259830  1.1398 0.2545353    
## arch20             21    0 -0.0176655  0.0259293 -0.6813 0.4957838    
## arch21             22    0  0.0388086  0.0258469  1.5015 0.1334263    
## arch22             23    0  0.0457209  0.0258532  1.7685 0.0771688 .  
## arch23             24    0 -0.0071083  0.0257764 -0.2758 0.7827617    
## arch24             25    0  0.0369623  0.0246343  1.5004 0.1336958    
## logEqWMA(12)       26    0  0.1958940  0.0969820  2.0199 0.0435585 *  
## logEqWMA(24)       27    0 -0.2242694  0.0943199 -2.3778 0.0175343 *  
## logEqWMA(168)      28    0  0.1256501  0.0688076  1.8261 0.0680185 .  
## op2_dk2_load       29    0 -1.4793886  3.5493876 -0.4168 0.6768793    
## op2_dk2_wind       30    0  0.6688355  3.5396322  0.1890 0.8501509    
## op2_dk2_pen        31    0 -0.6140553  3.5410316 -0.1734 0.8623498    
## op2_dk2_exp        32    0  0.4197623  0.0732259  5.7324 1.179e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                      Chi-sq df p-value
## Ljung-Box AR(1)    382.7392  1       0
## Ljung-Box ARCH(25)   1.8303 25       1
## 26 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

## 
##   Path 1: 4 19 12 31 9 24 11 21 18 20 16 6 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 2: 6 19 31 9 12 24 11 21 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 3: 8 19 31 12 9 24 11 21 18 20 6 16 25 30 4 13 22 10 14 27 26 29 28 -23 -17 
##   Path 4: 9 19 31 12 24 11 21 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 5: 10 19 31 11 12 24 9 21 16 6 18 20 4 25 30 13 22 26 27 14 23 29 28 17 -15 
##   Path 6: 11 19 31 9 24 12 21 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 7: 12 19 31 9 24 11 21 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 8: 13 12 31 9 19 24 11 21 6 20 18 16 25 30 4 22 14 27 26 10 23 29 28 17 -15 
##   Path 9: 14 31 19 9 24 12 21 11 18 6 16 13 20 4 30 25 22 27 26 10 23 29 28 17 -15 
##   Path 10: 15 19 9 31 12 24 21 11 6 18 20 16 13 25 30 4 22 27 26 10 28 29 14 17 -23 
##   Path 11: 16 9 19 31 24 12 11 21 18 6 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 12: 17 31 9 12 19 11 24 16 21 6 20 4 18 22 25 30 15 13 26 27 23 10 14 29 -28 
##   Path 13: 18 9 12 31 19 24 11 21 6 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 14: 19 31 9 12 24 11 21 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 15: 20 19 9 31 24 12 21 11 18 6 16 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 16: 21 31 9 19 12 24 11 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 17: 22 9 19 24 31 12 21 11 6 18 16 20 4 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 18: 23 19 31 9 24 12 11 21 6 18 20 16 4 13 30 25 14 27 26 10 22 29 28 17 -15 
##   Path 19: 24 19 31 9 12 11 21 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 20: 25 19 31 24 9 12 21 11 18 16 6 20 4 30 13 22 14 27 26 10 23 29 28 17 -15 
##   Path 21: 26 9 31 19 24 12 16 21 20 18 11 25 13 6 27 22 30 15 4 10 28 29 14 17 -23 
##   Path 22: 27 9 31 12 19 24 26 16 20 21 11 18 25 6 22 13 30 15 4 10 28 29 14 17 -23 
##   Path 23: 28 19 31 9 24 12 11 21 6 18 16 20 4 22 13 29 30 25 27 26 10 14 23 17 -15 
##   Path 24: 29 19 9 12 24 11 21 6 18 16 20 4 22 13 25 30 31 28 27 26 10 14 23 17 -15 
##   Path 25: 30 19 9 12 24 11 21 6 18 16 20 4 22 31 25 13 14 27 26 10 23 29 28 17 -15 
##   Path 26: 31 19 9 12 24 11 21 6 18 16 20 4 22 30 25 13 14 27 26 10 23 29 28 17 -15 
## 
## Terminal models:
## 
##          info(sc)      logl    n k
## spec 1: 0.2954336 -213.8080 1648 8
## spec 2: 0.2985068 -212.6366 1648 9
## spec 3: 0.2772833 -198.8521 1648 8
## spec 4: 0.2797328 -200.8706 1648 8
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch2   arch4   arch6   arch7   arch22   op2_dk2_exp 
## % Date: Fri Sep 13 15:12:39 2024 
## % LaTeX code generated in R 4.3.1 by the gets package
## % Note: The {eqnarray} environment requires the {amsmath} package
## \begin{eqnarray}
##   \widehat{e} &=& \underset{(0.0242)}{0.4963} + \underset{(0.0243)}{0.3142}arch1 + \underset{(0.0232)}{0.1028}arch2 + \underset{(0.0243)}{0.1105}arch4 + \underset{(0.0242)}{0.1187}arch6 + \underset{(0.0206)}{0.1009}arch7 + \underset{(0.0581)}{0.0445}arch22 + \underset{(NA)}{0.3547}op2_dk2_exp - \underset{(NA)}{1.1338}Elnz2 \\[2mm] 
##    && R^2=NA \qquad \widehat{\sigma}=0.3225 \qquad LogL=-198.8521 \qquad T = 1648 \nonumber \\ 
## \end{eqnarray}
## # A tibble: 1,816 × 6
##    date       p_dk2_price p_dk2_load p_dk2_wind p_dk2_pen p_dk2_exp
##    <date>           <dbl>      <dbl>      <dbl>     <dbl>     <dbl>
##  1 2010-01-01        3.70       7.48       5.03     -2.43     0.223
##  2 2010-01-02        3.99       7.63       5.11     -2.51     0.156
##  3 2010-01-03        3.84       7.61       3.55     -4.05     0.389
##  4 2010-01-04        4.53       7.75       5.58     -2.17     0.532
##  5 2010-01-05        4.18       7.82       4.39     -3.43     0.317
##  6 2010-01-06        4.00       7.75       4.25     -3.50     0.374
##  7 2010-01-07        5.23       7.75       4.39     -3.36     0.528
##  8 2010-01-08        6.13       7.76       5.33     -2.43     0.761
##  9 2010-01-09        3.98       7.62       6.32     -1.30     0.955
## 10 2010-01-10        3.88       7.65       6.38     -1.27     0.839
## # ℹ 1,806 more rows
## GUM log-variance equation:
## 
##               reg.no. keep       coef  std.error  t-stat   p-value    
## vconst              1    1  1.1875288  2.5104695  0.2238 0.6361914    
## arch1               2    0  0.2314478  0.0251879  9.1888 < 2.2e-16 ***
## arch2               3    0 -0.0088724  0.0258884 -0.3427 0.7318545    
## arch3               4    0  0.0122561  0.0259321  0.4726 0.6365467    
## arch4               5    0  0.0348852  0.0259145  1.3462 0.1784378    
## arch5               6    0  0.0201776  0.0259228  0.7784 0.4364636    
## arch6               7    0  0.0916076  0.0258672  3.5415 0.0004092 ***
## arch7               8    0  0.1308197  0.0259548  5.0403 5.171e-07 ***
## arch8               9    0  0.0727556  0.0262266  2.7741 0.0055990 ** 
## arch9              10    0 -0.0237685  0.0262812 -0.9044 0.3659228    
## arch10             11    0  0.0041139  0.0262526  0.1567 0.8754963    
## arch11             12    0 -0.0474794  0.0261955 -1.8125 0.0700945 .  
## arch12             13    0 -0.0489032  0.0260989 -1.8738 0.0611428 .  
## arch13             14    0 -0.0454825  0.0257888 -1.7637 0.0779792 .  
## arch14             15    0  0.1234011  0.0258799  4.7682 2.026e-06 ***
## arch15             16    0 -0.0284508  0.0260323 -1.0929 0.2745990    
## arch16             17    0 -0.0012508  0.0259948 -0.0481 0.9616282    
## arch17             18    0  0.0078056  0.0259769  0.3005 0.7638482    
## arch18             19    0  0.0018469  0.0257982  0.0716 0.9429364    
## arch19             20    0  0.0251884  0.0256157  0.9833 0.3255973    
## arch20             21    0  0.0155266  0.0256943  0.6043 0.5457408    
## arch21             22    0  0.0638206  0.0256656  2.4866 0.0129965 *  
## arch22             23    0  0.0186836  0.0256594  0.7281 0.4666344    
## arch23             24    0  0.0051734  0.0256868  0.2014 0.8404083    
## arch24             25    0 -0.0533515  0.0249747 -2.1362 0.0328112 *  
## logEqWMA(12)       26    0  0.2804223  0.1544053  1.8161 0.0695334 .  
## logEqWMA(24)       27    0 -0.1798325  0.1603252 -1.1217 0.2621680    
## logEqWMA(168)      28    0  0.0771495  0.1064656  0.7246 0.4687762    
## p_dk2_load         29    0 -4.7502740  4.7773468 -0.9943 0.3202096    
## p_dk2_wind         30    0  4.6473945  4.7496355  0.9785 0.3279864    
## p_dk2_pen          31    0 -4.6051315  4.7486800 -0.9698 0.3323058    
## p_dk2_exp          32    0  0.3639357  0.0733755  4.9599 7.795e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Diagnostics:
## 
##                     Chi-sq df   p-value
## Ljung-Box AR(1)    438.746  1 0.000e+00
## Ljung-Box ARCH(25)  77.133 25 3.189e-07
## 26 path(s) to search
## Searching: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

## 
##   Path 1: 3 19 17 11 24 18 4 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 2: 4 19 17 11 24 3 18 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 3: 5 17 11 24 18 19 3 21 23 4 28 10 31 29 27 30 20 16 6 13 12 26 14 25 22 9 
##   Path 4: 6 19 17 11 24 18 3 4 21 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 5: 9 11 19 24 17 3 4 18 10 21 6 16 28 31 29 30 23 27 20 13 5 12 14 25 26 22 
##   Path 6: 10 11 19 24 17 18 3 4 21 28 6 23 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 7: 11 17 19 24 3 18 4 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 8: 12 17 11 18 19 24 3 4 21 28 6 10 31 29 23 27 20 30 16 26 13 14 5 25 22 9 
##   Path 9: 13 19 17 24 11 18 3 21 4 6 23 28 10 27 20 31 29 30 16 26 12 14 5 25 22 9 
##   Path 10: 14 17 19 11 24 3 18 21 4 6 28 31 29 23 16 30 10 20 27 12 26 13 5 25 22 9 
##   Path 11: 16 19 11 24 17 3 18 4 21 23 6 28 31 29 30 10 27 20 13 26 12 14 5 25 22 9 
##   Path 12: 17 19 11 24 3 18 4 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 13: 18 17 19 11 24 3 4 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 14: 19 17 11 24 3 18 4 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 15: 20 17 11 24 19 3 18 4 23 21 27 10 28 31 29 30 6 16 13 26 12 14 5 25 22 9 
##   Path 16: 21 17 19 11 24 18 3 4 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 17: 22 19 17 11 24 3 18 4 27 20 10 31 29 28 6 30 16 23 21 14 12 26 13 5 25 9 
##   Path 18: 23 17 19 11 18 3 24 4 21 6 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 19: 24 17 19 11 3 18 4 21 6 23 28 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 20: 25 18 19 11 17 24 4 3 28 21 6 23 31 29 30 16 10 20 14 5 12 27 26 13 22 9 
##   Path 21: 26 24 3 18 19 17 21 11 23 10 27 20 4 31 29 28 30 12 6 16 13 14 5 25 22 9 
##   Path 22: 27 24 19 18 17 11 3 21 23 4 28 10 6 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 23: 28 17 19 11 24 3 18 4 21 6 23 10 27 31 29 30 20 16 13 26 12 14 5 25 22 9 
##   Path 24: 29 19 17 11 30 24 18 3 4 21 6 23 28 10 27 31 20 16 13 26 12 14 5 25 22 9 
##   Path 25: 30 19 17 11 24 29 18 3 4 21 6 23 28 10 27 31 20 16 13 26 12 14 5 25 22 9 
##   Path 26: 31 19 17 11 24 18 3 29 4 21 6 23 28 10 27 30 20 16 13 26 12 14 5 25 22 9 
## 
## Terminal models:
## 
##                  info(sc)      logl    n k
## spec 1 (1-cut): 0.5295833 -414.1547 1648 6
## 
## Retained regressors (final model):
## 
##   vconst   arch1   arch6   arch7   arch14   p_dk2_exp 
## % Date: Fri Sep 13 15:12:39 2024 
## % LaTeX code generated in R 4.3.1 by the gets package
## % Note: The {eqnarray} environment requires the {amsmath} package
## \begin{eqnarray}
##   \widehat{e} &=& \underset{(0.0226)}{0.0993} + \underset{(0.0237)}{0.2617}arch1 + \underset{(0.0245)}{0.1026}arch6 + \underset{(0.0234)}{0.1599}arch7 + \underset{(0.0707)}{0.1255}arch14 + \underset{(NA)}{0.3724}p_dk2_exp - \underset{(NA)}{1.1780}Elnz2 \\[2mm] 
##    && R^2=NA \qquad \widehat{\sigma}=0.3222 \qquad LogL=-414.1547 \qquad T = 1648 \nonumber \\ 
## \end{eqnarray}